我是否需要将所有类定义为Magento模型?

时间:2012-01-12 13:31:53

标签: php magento

我正在定义一个新块来清理我的视图:

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

1 个答案:

答案 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中查找该定义。

简短的故事是这样的:定义你的类前缀,你可以创建任意数量的类。