锂PHP框架如何在PHP页面中生成$this上下文?

Posted

技术标签:

【中文标题】锂PHP框架如何在PHP页面中生成$this上下文?【英文标题】:How does the lithium PHP framework generate a $this context in a PHP page? 【发布时间】:2012-11-22 09:59:47 【问题描述】:

我一直在调查Lithium php Framework,但我不明白它是如何设置$this->context; (particularly in this layout.)

由于您不能简单地重新分配$this,显然这个布局会在某些时候被包含在内,更让我困惑的是他们在类定义之外使用$this

我已经有一段时间没有编写 PHP 代码了,所以请在这里帮助我。

【问题讨论】:

【参考方案1】:

让我印象深刻的第一个想法是这个模板页面是从一个方法调用的。

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可以访问Viewer类的任意方法

【讨论】:

是的,这就是 Lithium 的工作方式。这也是几乎所有使用 PHP 模板的 PHP 框架和模板库都是这样做的。【参考方案2】:

很简单:通过在类的方法内部调用 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>

【讨论】:

以上是关于锂PHP框架如何在PHP页面中生成$this上下文?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中生成 PDF/A-1a pdf?

PHP - 从请求中生成干净的 TXT 输出

使用锂和 MySQL 的 CRUD

如何在 PHP 中生成 300X200 尺寸的图像缩略图?

如何在php中生成自定义图像?

如何从选项中生成变量:在 PHP $_POST 中选择?