我有这个代码,我正在尝试使用对象
<?php
class Controller {
public $_view;
public function __construct() {
$this->_view = new View();
return $this->_view;
}
}
class View {
public $_params = array ();
public function set_params($index_name,$valores) {
$this->_params[$index_name] = $valores;
}
public function get_param($index_name){
return $this->_params[$index_name];
}
}
?>
我想这样做:
class Index extends Controller {
public function index() {
$model = Model::get_estancia();
$usuarios = $model->query("SELECT * FROM usuarios");
$this->_view->set_params(); // cant be used.
$this->load_view("index/index");
}
}
我想使用set_parms函数。 但我看不到视图功能,然后我无法使用。 有人可以解释并告诉我一个安全的好方法吗?
答案 0 :(得分:2)
Phil的更正:如果找不到__construct()方法,PHP将恢复为旧的构造函数语法,并检查与对象同名的方法。在您的情况下,方法index()
被视为构造函数,并阻止父的构造函数将视图对象加载到$ _view属性中。
您可以通过在子节点中定义__construct()
并调用父节点的构造函数来强制类继承父节点的构造函数:
public function __construct() {
parent::_construct();
}
这是固定代码:
<?php
class Controller {
public $_view;
public function __construct() {
$this->_view = new View();
return $this->_view;
}
}
class View {
public $_params = array ();
public function set_params($index_name,$valores) {
$this->_params[$index_name] = $valores;
}
public function get_param($index_name){
return $this->_params[$index_name];
}
}
class Index extends Controller {
public function __construct() {
parent::__construct();
}
public function index() {
$model = Model::get_estancia();
$usuarios = $model->query("SELECT * FROM usuarios");
$this->_view->set_params(); // cant be used.
$this->load_view("index/index");
}
}