я использую REST Server в codeigniter, и способ использования заключается в том, что тогда в моем приложении на всех моих контроллерах я должен написать эту строку при запуске:
require APPPATH . '/libraries/REST_Controller.php';
Кто-нибудь знает, как автоматически загрузить этот REST_Controller и избежать этой строки во всех моих контроллерах? Я не хочу использовать требовать.
Заранее спасибо
Вы можете достичь этого через Codeigniter
Конфигурация автозагрузки.
Изменить ваш проект autoload.php
который находится в каталоге YourProject/application/config/
$autoload['libraries'] = array('REST_Controller');
И в контроллерах доступ к этому классу библиотеки через $this->rest_controller
,
Кстати: Rest_Controllers — это файл библиотеки, поэтому я не думаю, что к имени добавляется суффикс Controller
это хорошее имя для этого.
редактировать
Из вашего комментария я понял, что вы имеете в виду все ваши контроллеры, REST_Controller
и вам не нужно указывать его в начале каждого файла контроллера.
Решение:
REST_Controller.php
в каталог YourProject/application/core/
,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
Поместите файл 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>';
}
}