Как литиевая среда PHP генерирует контекст $this на странице PHP?
Я изучал Lithium PHP Framework и не понимаю, как он работает $this->context;
( особенно в этом макете.)
Поскольку вы не можете просто переназначить $this
очевидно, этот макет будет включен в какой-то момент, и что еще больше смущает меня тем, что они используют $this
вне определения класса.
Я давно не кодировал PHP, поэтому, пожалуйста, помогите мне здесь.
2 ответа
Решение
Первая идея, которая меня поразила, заключается в том, что эта шаблонная страница вызывается из метода.
class Viewer
{
public $html;
private $title;
private $content;
public function __construct()
{
$this->html = new \Utilities\HTMLBag();
}
public function loadView($template)
{
ob_start();
include 'path/to/views/'.$template.'.php';
$this->content = ob_get_clean();
}
public function title()
{
return $this->title;
}
}
С этого момента, включенный $template
может получить доступ к любому методу класса зрителя
Просто: вызывая include/require внутри метода в классе.
Файл A.php:
<?php
class A {
public $test = 'Hello';
public function xyz() {
include 'B.php';
}
}
Файл B.php:
<html>
<body><?php echo $this->test; ?></body>
</html>