API в классе в Codeigniter - PullRequest
       1

API в классе в Codeigniter

1 голос
/ 23 февраля 2012
class Api extends CI_Controller {

   public function index()
   {
        show_error("You are not authorized to access this page", 401);
   }

У меня есть класс API class Api extends CI_Controller и еще один
class myproject extends, теперь, если хотите использовать функции класса API в классе myproject.Как я могу сделать .Должен ли я создать объект класса api или просто расширить класс myproject классом parent :: api.Пожалуйста, помогите мне, так как я не очень хорош в упс.

подробнее - я создал класс "класс myproject extends ci_controller", который имеет различные функции для регистрации пользователей и входа в систему.все работает нормально, используя один контроллер.Но теперь хочу использовать файл API. У которого есть функции для входа в систему.Как я могу вызвать эти функции в API-файле из "класса myproject"

Ответы [ 4 ]

0 голосов
/ 23 февраля 2012

Прежде всего, это больше похоже на проблему разработки программного обеспечения, чем на реальный код.

CodeIgniter основан на концепции MVC, а контроллер предназначен только для создания страницы. Вероятно, вам следует создать библиотеку для всех функций API и иметь контроллер, вызывающий эту библиотеку и преобразующий данные в JSON или куда вы хотите, чтобы они были преобразованы.

Для себя я применяю простое правило: Никогда не пишите / не вызывайте метод Controller, который не генерирует какую-либо форму вывода.

Я рекомендую придерживаться способа кодирования CodeIgniter, а не пытаться их избегать.

0 голосов
/ 23 февраля 2012

Вы можете создать помощника, например форму, и использовать свой метод. Тогда вы можете загрузить его:

$this->load->helper('api');
0 голосов
/ 23 февраля 2012

Во-первых, вы не можете вызывать функцию контроллера в контроллере до тех пор, пока не наследуете ее.

Лучше создать класс API в виде библиотеки, а не контроллера.

Если у вас есть какое-то ограничение на использование только в качестве контроллера, используйте эти API-интерфейсы с помощью вызовов curl.

Но лучший способ - использовать их в качестве помощника, если вы обращаетесь к ним только с вашего собственного сервера..

0 голосов
/ 23 февраля 2012

Вам просто нужно расширить класс API, как в

class Myproject extends Api { ... }

, но есть несколько других проблем, таких как include_once("Api.php"), например, в файле Myproject.php, чтобы подклассможно «увидеть» объявление суперкласса.В этой ветке на форумах codeigniter обсуждаются эти проблемы (извините за версию веб-кеша Google, но форумы в настоящее время недоступны для обслуживания).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...