2011-01-13 4 views
2

당신은 같은 것을 할 수 있습니다 CakePHP의 클래스 생성자 정상 PHP에서

Class Test { 
    function __construct($var) { 
     echo $var; exit; 
    } 
} 

new Test('Hello World'); 

그래서 당신은 바로 생성자에 변수를 전달할 수 있습니다. 변수가 전달되지는 않지만 cakePHP에서는 작동하지 않는 것 같습니다. 유일한 방법 IV는 어떻게 할 일은 관리 다음

(구성 요소 클래스)

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

(컨트롤러)

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

더 처음처럼이 일을 더 나은 방법이 있나요 직접 함수 이름을 호출하지 않고도?

+0

'construct ($ var)'누락 된'__','__construct ($ var)'로 변경되었습니다. – Ish

답변

2

컨트롤러에 $ components 변수를 포함 시키면 이미 TestComponent 클래스의 인스턴스를 만들고 사용자가 직접 인스턴스를 만들지 않기 때문입니다.

하지만 CakePHP가 PHP가 된 후에는 항상 클래스를 생성하여 컨트롤러에 포함하고 생성자를 사용할 수 있습니다.

4

구성 요소를 사용하면 실제로 new TestComponent($args)을 쓰고 있습니까?
그렇지 않습니다. Component를 사용하도록 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를 참조하십시오.