0

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

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

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

所以,我正在测试一门课,我是否可以像 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 那样做?

4

2 回答 2

1

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

这是一个快速示例,向您展示如何$this在视图文件中使用该方法。

意见.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');

测试.php:

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

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

于 2013-08-13T09:28:12.540 回答
1

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

更多内容: $this 如何在 zend 框架的 .phtml 文件中工作?

于 2013-08-13T09:22:31.010 回答