cakePHP类构造函数

时间:2011-01-13 15:58:11

标签: php 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');

有没有更好的方法可以更像第一种方式而不必直接调用函数名?

2 个答案:

答案 0 :(得分:4)

使用组件,您实际在哪里写new TestComponent($args)
你没有。您只需将Cake配置为使用Component,Cake将为您实例化 你自己从未真正调用构造函数。

将参数传递给Component的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

答案 1 :(得分:2)

这是因为当您使用变量$ components在控制器中包含组件时,这已经构成了TestComponent类的实例,并且您不自己创建实例。

但毕竟CakePHP是php,你总是可以创建一个类,并将它包含在控制器中并使用构造函数。