Codeigniter 3 контроллер автозагрузки

я использую REST Server в codeigniter, и способ использования заключается в том, что тогда в моем приложении на всех моих контроллерах я должен написать эту строку при запуске:

require APPPATH . '/libraries/REST_Controller.php';

Кто-нибудь знает, как автоматически загрузить этот REST_Controller и избежать этой строки во всех моих контроллерах? Я не хочу использовать требовать.

Заранее спасибо

5

Решение

Вы можете достичь этого через CodeigniterКонфигурация автозагрузки.

Изменить ваш проект autoload.php который находится в каталоге YourProject/application/config/

$autoload['libraries'] = array('REST_Controller');

И в контроллерах доступ к этому классу библиотеки через $this->rest_controller,

Кстати: Rest_Controllers — это файл библиотеки, поэтому я не думаю, что к имени добавляется суффикс Controller это хорошее имя для этого.

редактировать

Из вашего комментария я понял, что вы имеете в виду все ваши контроллеры, REST_Controllerи вам не нужно указывать его в начале каждого файла контроллера.

Решение:

  1. Переехать REST_Controller.php в каталог YourProject/application/core/,
  2. В YourProject/application/config/config.php изменение строки 119 $config['subclass_prefix'] = 'MY_'; в $config['subclass_prefix'] = 'REST_';

затем Codeigniter будет загружать REST_Controller автоматически.

Но subclass_prefix Конфигурация имеет глобальный эффект, и вам нужно изменить местоположение REST_Conttoller.phpЧтобы сделать минимальные изменения, я думаю, что лучший способ это создать MY_Controller класс в каталоге ./application/core/ и требуют REST_Controller внизу этого нового файла. когда CI нагрузка MY_controller автоматически REST_Controller тоже потребуется.

Обратите внимание: MY_Controller нужно простираться от CI_Controller

3

Другие решения

Поместите файл include в конструктор MY_Controller класс, а затем распространить его на любой контроллер, который должен использовать REST_Controller,
Если у вас нет MY_Controller.php файл в APPPATH.'core/' местоположение, сделать один и использовать его, как представлено здесь:

<?php defined('BASEPATH') OR exit('See you next time.');

//APPPATH.'core/' location
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();

require APPPATH . 'libraries/REST_Controller.php';//this constant ends with slash already
}
}

Теперь в каждом контроллере, который вы хотите использовать REST_Controller, есть такой код:

<?php defined('BASEPATH') OR exit('See you next time.');

//example controller
class Api extends MY_Controller
{
public function __construct()
{
parent::__construct();
}

//bare example method
public function some_get()
{
echo '<pre>', var_dump('Some REST_Controller code logic here'), '</pre>';
}
}
2

По вопросам рекламы [email protected]