Как литиевая среда 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>
Другие вопросы по тегам