2011-01-13 4 views
2

。これは、変数がそれに渡されないものの、cakePHPでは動作しないようです。 (コンポーネントクラス)CakePHPのクラスのコンストラクタ

Class TestComponent extends Object { 
    function construct($var) { 
     echo $var; exit; 
    } 
} 

(コントローラ)

new $this->Test->construct('Hello World'); 

より最初のようにこれを行うには良い方法はあり

:IVはそれを行うために管理する唯一の方法は、次の手順を実行しています関数名を直接呼び出す必要はありませんか?

+0

'construct($ var)'が不足しています。 '__'、' __construct($ var) 'に変更しました。 – Ish

答えて

2

これは、変数$ componentsを使用してコントローラにコンポーネントを組み込むと、既にTestComponentクラスのインスタンスを作成しており、自分でインスタンスを作成しないためです。

しかし、すべてのCakePHPの後には、常にクラスを作成し、それをコントローラに組み込み、コンストラクタを使用することができます。

4

コンポーネントを使用して、実際にはどこにnew TestComponent($args)と書いていますか?
あなたはそうではありません。コンポーネントを使うようにCakeを設定するだけで、Cakeはそれをインスタンス化します。
実際にコンストラクタを実際に呼び出すことは決してありません。

コンポーネントにパラメータを渡すためのケーキの方法はinitialize方法によるものである。

class TestComponent extends Object { 
    public function initialize(&$controller, $settings = array()) { 
     // use $settings 
    } 
} 

class MyController extends AppController { 
    public $components = array('Test' => array(/* your settings */)); 
} 

参照http://book.cakephp.org/view/996/Creating-Components

関連する問題