我正在定义一个新块来清理我的视图:
class Jamie_Utilities_Block_Myblock extends Mage_Core_Block_Template
{
public function getProducts()
{
$products = array(
new Product('Product Name', "image source"),
new Product('Product Name', "image source"),
);
return $products;
}
}
我想在同一个文件中创建一个小Product
类来保存几个字段。 Myblock.php现在看起来像:
class Jamie_Utilities_Block_Myblock extends Mage_Core_Block_Template
{...}
class Product
{
public $name;
public $image;
public function __construct($name, $image)
{
$this->name = $name;
$this->image = $image;
}
}
这样可行,但这样做是件好事吗?我应该在模块的config.xml
中将所有类声明为模型,还是应该使用更好的类名来避免冲突,例如Jamie_Utilities_Block_Product
?
答案 0 :(得分:2)
配置中的<models>
节点是类前缀,而不是类名。
<config><global><models><your_module><class>Yer_Module_Model</class></...>
的示例配置是在解析此代码时找到的内容:Mage::getModel('your_module/rest_of_class_name');
。第一部分转换为yer_module_model,其余部分使用前导下划线,即yer_module_model_rest_of_class_name
。根据自动加载器,系统将在Yer/Module/Model/Rest/Of/Classname.php
中查找该定义。
简短的故事是这样的:定义你的类前缀,你可以创建任意数量的类。