返回并回显$ this?

时间:2013-08-13 09:06:54

标签: php oop magento-1.7

我刚开始学习Magento,我发现它如何执行方法很有趣,例如,

<?php echo $this->getChildHtml('blablabla') ?>

$this似乎是对象标识符,我们通常会在PHP中获得$this预定义变量的错误。

所以,我正在测试一个类,我是否可以像Magento那样做。我的测试,

class boo
{

    function getChildHtml()
    {
        return "hello world!";
    }

    function getMethod()
    {
        return $this->getChildHtml();
    }   

}

$boo = new boo();
echo $boo->getMethod();
// result: hello world!

$this = new boo();
echo $this->getMethod();
//Fatal error: Cannot re-assign $this 

有人能告诉我如何像Magento那样做吗?

2 个答案:

答案 0 :(得分:1)

无法按设计重新分配$this变量。 $this变量始终动态引用我们当前所在的类。在Magento或通常在Zend Framework中,phtml文件中的$this对象引用视图对象。

更多相关内容: How $this works in .phtml files in zend framework?

答案 1 :(得分:1)

这看起来像是一种MVC风格的方法。

以下是一个简单的示例,向您展示如何在视图文件中使用$this方法。

views.php:

<?php

class boo
{
    public $content;

    public function do_something()
    {
        return date("Y-m-d");
    }

    public function load($file)
    {
        ob_start();
        require($file);
        $this->content = ob_get_clean();
        echo $this->content;
    }
}

$boo = new boo();
$boo->load('test.php');

test.php的:

<?php echo $this->do_something(); ?>

说实话,我不确定是否需要进行输出缓冲,这只是一个简单的例子。