Поскольку вы пометили это magento , вероятно, у вас есть класс, подобный Mage_Catalog_Block_Navigation
.По крайней мере, методы намекают на это.Теперь я понятия не имею о Magento, но этот класс простирается от Mage_Core_Block_Template
, и в этом классе у вас есть метод fetchView
, , который в какой-то момент делает
include $includeFilePath;
КогдаВы include
код внутри метода, у вас есть доступ к $this
во включенном коде файла, потому что он оценивается в области действия этого экземпляра:
Когдафайл включен, код, который он содержит, наследует переменную область строки, в которой происходит включение.Любые переменные, доступные в этой строке в вызывающем файле, будут доступны в вызываемом файле, начиная с этого момента.Однако все функции и классы, определенные во включаемом файле, имеют глобальную область видимости.
Общий пример:
class Template
…
public function render($templateFile)
{
include $templateFile;
}
public function ___($stringToTranslate)
{
// translates $stringToTranslate somehow
}
}
Обратите внимание, что "$this
не является self
класса" является только частично правильным.self
также является ключевым словом и php, но хотя self
действительно относится к классу, $this
относится к экземпляру класса.