我是PHP的新手; 今天我在Magento中看到了一些代码如下top.phtml.
<?php $_menu = $this->renderCategoriesMenuHtml(0,'level-top') ?>
<?php if($_menu): ?>
<div class="nav-container">
<ul id="nav">
<!--NEW HOME LINK -->
<li class="home"><a href="<?php echo $this->getUrl('') ?>"><?php echo $this->__('Home') ?></a>"</li>
<!--NEW HOME LINK -->
<?php echo $_menu ?>
</ul>
</div>
<?php endif ?>
Run Code Online (Sandbox Code Playgroud)
我知道$this是自己的class,它只在类中用来引用方法或属性,在上面的代码中,没有定义类,为什么它可以直接使用$ this关键字?什么$this->__('Home')代表什么?
因为你标记了这个magento你可能有类似的类Mage_Catalog_Block_Navigation.至少,这些方法暗示了这一点.现在,我对Magento没有任何线索,但是这个类从Mage_Core_Block_Template那个类扩展而来,你有fetchView方法,在某些时候它
include $includeFilePath;
Run Code Online (Sandbox Code Playgroud)
在include方法内部进行编码时,您可以访问$this包含的文件代码,因为它是在该实例的范围内进行评估的:
包含文件时,它包含的代码将继承发生包含的行的变量范围.从那时起,调用文件中该行可用的任何变量都将在被调用文件中可用.但是,包含文件中定义的所有函数和类都具有全局范围.
一般例子:
class Template
…
public function render($templateFile)
{
include $templateFile;
}
public function ___($stringToTranslate)
{
// translates $stringToTranslate somehow
}
}
Run Code Online (Sandbox Code Playgroud)
请注意," $this不属于self该类"只是部分正确.self也是一个关键字和php,但self实际上是指类,$this指的是一个类的实例.