main.controller.php:澄清关于PHP和范围
final class MainController extends Controller {
public function is_locked() {
$lock = new View('lock');
Res::render($lock);
}
}
view.class.php:
final class View {
private $data;
public function get_title() {
return isset($this->title) ? $this->title : DEFAULT_TITLE;
}
public function get_layout() {
return isset($this->layout) ? $this->layout : 'base';
}
public function get_layout_path() {
return SITE_PATH .'app/views/layouts/'. $this->get_layout() .'.layout.php';
}
public function get_path() {
return SITE_PATH .'app/views/' .$this->name .'.view.php';
}
public function print_title() {
echo $this->get_title;
}
public function __construct($name) {
$this->data = array();
$this->data['name'] = $name;
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
$trace = debug_backtrace();
trigger_error('Undefined property via __get(): '. $name .' in '. $trace[0]['file'] .' on line' . $trace[0]['line'], E_USER_NOTICE);
return null;
}
public function __isset($name) {
return isset($this->data[$name]);
}
public function __unset($name) {
unset($this->data[$name]);
}
}
这是我对我的回应类渲染方法:
public static function render($view) {
include_once SITE_PATH .'app/views/layouts/root.layout.php');
}
从我的一个控制器中调用... param $ view是一个简单的View对象...
这里是我的root.layout.php:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title><?php $view->print_title(); ?></title>
</head>
<body>
root layout
</body>
</html>
我似乎无法从布局文件访问到$视图对象包括,可能是一个愚蠢的问题,但现在我真的”不知道为什么不应该工作...
有人能解释我如何在这种情况下工作的PHP?我做错了什么?
当你不能渲染()时,你真的传递了一些东西吗?请注意,您也有语法错误。 – KingCrunch
用完整的代码编辑的问题.. – cl0udw4lk3r