2016-08-09 6 views
-1

私は、これはCI 3.1用カスタムライブラリの一部であり、コードの一部ですがあります

class NavigationMenu 
{ 
    protected $CI; 

    public function __construct($params = ['config' => 'navigation']) 
    { 

     // this is where I read $params as an array of 10 values 
     // and it shouldn't be since $params has only one key = config 
     var_dump($params); 

     $this->CI =& get_instance(); 
     $this->CI->load->helper('url'); 
     $this->CI->config->load($params['config'], true); 
     $this->CI->load->model('nav_model', 'nav'); 
    } 
    .... 
} 

次のコード持ってnavigation.php`ファイル」:

$config['navigation_open']   = '<ul class="nav">'; 
$config['navigation_close']   = '</ul>'; 
$config['item_open']    = '<li>'; 
$config['item_open_active_class'] = 'active'; 

私は予告を持っているが$paramsはコンストラクタに渡されます。

array (size=10) 
    'navigation_open' => string '<ul class="nav">' (length=16) 
    'navigation_close' => string '</ul>' (length=5) 
    'item_open' => string '<li>' (length=4) 
    'item_open_active_class' => string 'active' (length=6) 

なぜ読まないのですか?

array (size=1) 
    'config' => string 'navigation' (length=10) 

EDITとして、私は、単純な私は、ライブラリを自動ロードしています代わりに作成されているオブジェクトではないという意味ライブラリを、使用していない

config/autoload.php 
$autoload['config'] = ['navigation']; 

これまで、クラスのコンストラクタの原因となります私がアプリケーションのindex.phpファイルにヒットしたときにいつでも呼び出すことができます。

これはCIのデフォルト動作ですか? PHPコンストラクタから、私はそれを認識していませんか?私のコードで何か間違っていると私はそれを見ていない?

+0

[manual](https://www.codeigniter.com/userguide3/libraries/config.html#manual-loading)をお読みください! – csabinho

+0

@ csabinho本当ですか?正確にはどこで?私はすでにそれを読んだので、この問題に関して役に立たないものは見つけられません。 – ReynierPM

+0

'$ this-> config-> load( 'filename'); filenameは設定ファイルの名前で、拡張子は.phpではありません。 ' – csabinho

答えて

0

代わりに$this->CI->config->set_item($params['config'], true)を使用してください。慎重にthis documentationとお読みください。

+0

これはどちらも動作しません、私のコード例を試してみると表示されます。私はコンストラクタパラメータからデフォルトの設定ファイルをロードしようとしている設定に値を設定しようとしていません。 – ReynierPM

+0

@ReynierPM何かがデフォルトの関数パラメータを上書きし、関数本体にダーケアします。 –

関連する問題