2016-08-10 46 views
3

我用笨REST Server的方式,以及使用的是那麼我在我的所有控制器的應用程序,我必須寫在開始這一行:笨3自動加載控制器

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

有誰知道如何自動加載這個REST_Controller,並避免在我的所有控制器中的這一行?我不希望使用需要。

預先感謝

回答

2

您可以通過Codeigniter的自動加載配置實現這一目標。

編輯您的項目autoload.php它位於目錄YourProject/application/config/

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

並在控制器通過$this->rest_controller訪問該庫類。

BTW: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位置,以便使最小的變化,我認爲最好的辦法是你創建的目錄./application/core/MY_Controller類,並在這個新的文件的底部需要REST_Controller。當自動REST_Controller也將被要求CI負荷MY_controller

注:MY_Controller需要從CI_Controller

+0

我的所有控制器都擴展了REST_Controller。所以如果我把自動載入包REST_Controller,我不能使用$ this-> rest_controller,因爲我必須在類開始之前使用:class Users extends REST_Controller {} – Sasa

+0

好吧,我知道,我會編輯我的答案並提供解決方案爲此。@ Sasa –

+0

查看我的編輯@Sasa –

1

認沽文件擴展包括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>'; 
    } 
} 
+0

我無法用這個解決方案管理,得到錯誤404沒有找到。 – Sasa

+0

我寫到它是一個帶有示例方法的示例控制器。更新你的問題,你是如何使用它的,所以我可以幫助更多。 – Tpojka