我用笨REST Server的方式,以及使用的是那麼我在我的所有控制器的應用程序,我必須寫在開始這一行:笨3自動加載控制器
require APPPATH . '/libraries/REST_Controller.php';
有誰知道如何自動加載這個REST_Controller,並避免在我的所有控制器中的這一行?我不希望使用需要。
預先感謝
我用笨REST Server的方式,以及使用的是那麼我在我的所有控制器的應用程序,我必須寫在開始這一行:笨3自動加載控制器
require APPPATH . '/libraries/REST_Controller.php';
有誰知道如何自動加載這個REST_Controller,並避免在我的所有控制器中的這一行?我不希望使用需要。
預先感謝
您可以通過Codeigniter
的自動加載配置實現這一目標。
編輯您的項目autoload.php
它位於目錄YourProject/application/config/
$autoload['libraries'] = array('REST_Controller');
並在控制器通過$this->rest_controller
訪問該庫類。
BTW: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
位置,以便使最小的變化,我認爲最好的辦法是你創建的目錄./application/core/
MY_Controller
類,並在這個新的文件的底部需要REST_Controller
。當自動REST_Controller
也將被要求CI
負荷MY_controller
。
注:MY_Controller
需要從CI_Controller
認沽文件擴展包括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>';
}
}
我的所有控制器都擴展了REST_Controller。所以如果我把自動載入包REST_Controller,我不能使用$ this-> rest_controller,因爲我必須在類開始之前使用:class Users extends REST_Controller {} – Sasa
好吧,我知道,我會編輯我的答案並提供解決方案爲此。@ Sasa –
查看我的編輯@Sasa –