在普通的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 :(得分: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 */));
}
答案 1 :(得分:2)
这是因为当您使用变量$ components在控制器中包含组件时,这已经构成了TestComponent类的实例,并且您不自己创建实例。
但毕竟CakePHP是php,你总是可以创建一个类,并将它包含在控制器中并使用构造函数。