我刚开始学习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那样做吗?
答案 0 :(得分:1)
无法按设计重新分配$this
变量。 $this
变量始终动态引用我们当前所在的类。在Magento或通常在Zend Framework中,phtml文件中的$this
对象引用视图对象。
答案 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(); ?>
说实话,我不确定是否需要进行输出缓冲,这只是一个简单的例子。