定义Magento类名称的字符串的名称

时间:2010-12-01 06:12:19

标签: php design-patterns magento factory-pattern

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 个答案:

答案 0 :(得分:8)

此字符串称为类(模型,块,帮助器 - 取决于使用上下文)别名。 别名命名规则是:组/实体

每个模块都可以定义自己的组或定义现有组的重写。

答案 1 :(得分:3)

好问题艾伦。我有兴趣听听使用Factory模式和“快捷方式”表示法的其他框架。

我认为你正在使用URI的“标识符”部分。我认为“类标识符”或“模型标识符”有效。类标识符更通用,允许辅助方案。

答案 2 :(得分:3)

我倾向于使用class handle,因为它不带有像“类路径”这样的包袱,而且它们似乎确实是某种类型的“句柄”。

答案 3 :(得分:3)

坦率地说,这个内部快捷方式没有正式的名称进入特定的类。

但我知道斜杠之前的第一部分称为“类组”,它不是模块名称,因为Magento可以在同一组中的不同模块中共享不同的类(通过重写语句)。是的,有初始模块定义默认类前缀,但您可以通过配置文件合并更改此前缀。

第二部分我想称之为模型/模型资源/块/帮助器名称。

通常可以称之为:

  • Mage::getModel()Mage::getSingleton()
  • 的模型路径
  • 阻止Mage::getBlockSingleton()$layout->createBlock()
  • 的路径
  • Mage::helper()
  • 的辅助路径

但这个建筑没有官方名称。因此,调用它不是规则 那样:)


<强>更新: 在Mage_Core_Model_Config::getGroupedClassName()中,这种结构称为Class Id,因此这个名称可能更清楚。

答案 4 :(得分:2)

我会说一个“类路径”,但这可能会使那些在语言/解释器/编译器中具有更正式含义和实现的语言工作的人感到困惑。

答案 5 :(得分:2)

在我脑海里,我一直在使用“课堂要求”一词。你可以更进一步,做出“CRI” - 类似于URI但不是'通用'。但是现在我考虑一下,getModelcreateBlock不返回类,它们返回实例......