main.controller.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]);
}
}
これが私の応答クラスのrenderメソッドです:
public static function render($view) {
include_once SITE_PATH .'app/views/layouts/root.layout.php');
}
私のコントローラーの1つから呼び出されました...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>
含まれているレイアウトファイルから$viewオブジェクトにアクセスできないようです。ばかげた質問かもしれませんが、今のところ、なぜ機能しないのか本当にわかりません...
誰かがその状況でphpがどのように機能するかを私に説明できますか?私が間違っているのは何ですか?