Нужно ли определять все классы как модели Magento? - PullRequest
0 голосов
/ 12 января 2012

Я определяю новый блок для очистки моего вида следующим образом:

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 Ответ

2 голосов
/ 12 января 2012

Узел <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.

Короткая история такова: определите префикс вашего класса, и вы можете создать столько классов, сколько захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...