В этом коде что означает этот параметр клиента
В этом коде, что означает этот клиент параметр
$this->helper('customer')->getRegisterPostUrl();
3 answers
Сначала я хочу сказать, что у вас много вопросов о том, как работает Magento. Мне нравится этот дух.
Метод helper()
, который вы вызываете изнутри блока, то есть такой же, как вызов Mage::helper()
, является фабрикой.
Он возвращает вам экземпляр класса. Помощник в этом деле.
Метод Mage::helper
выглядит следующим образом:
public static function helper($name)
{
$registryKey = '_helper/' . $name;
if (!self::registry($registryKey)) {
$helperClass = self::getConfig()->getHelperClassName($name);
self::register($registryKey, new $helperClass);
}
return self::registry($registryKey);
}
Это означает, что экземпляр класса, который вы получите, будет одноэлементным. Каждый раз вы будете получать один и тот же экземпляр класса.
Это метод получает параметр $name
. На основе этого имени Magento определяет класс, который нуждается в установке. $helperClass = self::getConfig()->getHelperClassName($name);
Если вы углубитесь в метод Mage_Core_Model_Config::getHelperClassName
, вы увидите следующее:
public function getHelperClassName($helperName)
{
if (strpos($helperName, '/') === false) {
$helperName .= '/data';
}
return $this->getGroupedClassName('helper', $helperName);
}
Это означает, что если параметр не содержит косой черты, то к параметру будет добавлено /data
.
таким образом, $this->helper('customer')
- это то же самое, что $this->helper('customer/data')
.
Если вы посмотрите дальше в методе getGroupedClassName
...вы, вероятно, заблудитесь:). Я знаю, что сначала так и было.
Но я объясню немного о том, как это работает.
В config.xml модуля, который у вас есть под тегом <global>
, определения моделей, блоков и помощников. вот так
<helpers>
<module_alias>
<class>Namespace_Module_Helper</class>
</module_alias>
</helpers>
При получении параметра, подобного customer/data
, magento ищет узел класса: конфигурация->глобальный->помощники->клиент->класс.
В этом случае это будет Mage_Customer_Helper
и добавляет к нему то, что находится после косой черты в первой форме uc. В этом случае Data
.
Таким образом, имя класса Mage_Customer_Helper_Data
.
Этот класс создается, и экземпляр возвращенный.
Это псевдоним для используемого вспомогательного класса, этот псевдоним используется для создания класса, загружаемого для выполнения указанной функции.
В этом случае псевдоним помощника для клиента сопоставляется с Mage_Customer_Helper
. Поскольку указан только псевдоним класса, функция getHelperClassName добавит /данные для загрузки вспомогательного класса по умолчанию с именем: Mage_Customer_Helper_Data
, затем загрузчик загрузит файл Mage/Customer/Helper/Data.php
.
В шаблонах $this->helper()
переводится в Mage::helper()
Таким образом, этот код означает, что это вызов Mage::helper('customer')
, который переводится в Mage_Customer_Helper_Data
(или любой класс, который его переписывает) в бэкэнде.
Если вам интересно, как это делается, взгляните на Mage_Core_Model_Config::getHelperClassName()