Имя для строк, которые определяют имена классов Magento - PullRequest
4 голосов
/ 01 декабря 2010

Magento использует фабричный шаблон для создания экземпляров объектов из классов

$model  = Mage::getModel('catalog/product'); //Mage_Catalog_Model_Product by default
$helper = Mage::helper('catalog/data');   //Mage_Catalog_Helper_Data by default

Эти строки расширены до имен классов, и Систему можно настроить для замены значений по умолчанию.

Как называются или должны называться эти строки? Я злоупотреблял термином URI (иногда смягчая злоупотребление фразой "URI-like"), но это не совсем правильно. «Имя класса» также кажется неправильным, поскольку оно может легко вызвать путаницу (Вы говорите об имени класса фабрики или фактическом имени класса PHP?)

У кого-нибудь есть какие-нибудь уколы в этом?

Ответы [ 6 ]

8 голосов
/ 01 декабря 2010

Эта строка называется псевдонимом класса (модель, блок, помощник - зависит от контекста использования).Правило именования псевдонимов: группа / сущность .

Каждый модуль может определять собственную группу или переписывать существующие.

3 голосов
/ 01 декабря 2010

Честно говоря, нет никакого официального имени для этого внутреннего ярлыка для определенного класса.

Но я знаю, что первая часть перед косой чертой называется "группа классов", это не имя модуля, потому чтоMagento может совместно использовать разные классы из разных модулей в одной группе (с помощью оператора перезаписи).Да, есть начальный модуль, который определяет префикс класса по умолчанию, но вы можете изменить этот префикс путем слияния конфигурационных файлов.

Во второй части я бы хотел назвать ресурс модель / модель / блок / имя помощника.

И в общем случае его можно назвать:

  • путь модели для Mage::getModel() и Mage::getSingleton()
  • путь блока для Mage::getBlockSingleton() и $layout->createBlock()
  • вспомогательный путь для Mage::helper()

Но для этой конструкции нет официального названия.Так что это правило не называется так:)


UPDATE : в Mage_Core_Model_Config::getGroupedClassName() эта конструкция называется Class Id, поэтому, возможно, это имя более понятно.

3 голосов
/ 01 декабря 2010

Я склонен использовать class handle, так как он не поставляется с багажом, как "путь к классу", и они, похоже, являются "ручками" какого-то типа.

3 голосов
/ 01 декабря 2010

Отличный вопрос, Алан.Мне было бы интересно услышать, как это называют другие фреймворки, использующие шаблон Factory и «ярлык».

Я думаю, что вы на правильном пути с частью идентификатора URI.Я думаю, что «Идентификатор класса» или «Идентификатор модели» работает.Идентификатор класса немного более универсален и учитывает вспомогательный сценарий.

2 голосов
/ 01 декабря 2010

В своей голове я использовал термин «запрос класса».Вы можете сделать еще один шаг и сделать этот «CRI» - похожим на URI, но не «универсальным».Однако теперь я думаю об этом, getModel и createBlock не возвращают классы, они возвращают экземпляры ...

2 голосов
/ 01 декабря 2010

Я бы сказал «путь к классу», но это может сбить с толку тех, кто работал в языках, где это имеет более формальное значение и реализацию в языке / интерпретаторе / компиляторе.

...