как вызвать статический метод в пользовательском классе magento

У меня есть пользовательская модель в пользовательской модели Magento со статической функцией:

class ABC_Module_Model_ClassName
{
    static public function send ( $something)
    {
         // do something static
    }
}

Теперь я вызываю функцию следующим образом:

ABC_Module_Model_ClassName::send($something); // works and is nothing wrong with it

Больше для целей согласованности я хотел бы знать, есть ли у Mage внутренний способ вызова статических методов, что-то вроде этого:

Mage::getModel('abc/module_className')::send($something); // this is wrong
// or 
Mage::getModel('abc/module_className', send($something)); // with a callback or something

person Elzo Valugi    schedule 03.03.2010    source источник


Ответы (1)


Учитывая, что любой метод, подобный Mage::getModel(), фактически вернет экземпляр класса, вы будете вызывать его динамически, а не статически. Например, вы будете делать $module->staticMethod(); вместо Module::staticMethod()..

Так что лучше всего

  • либо поместите статический метод как обычную функцию, чтобы он был доступен глобально,
  • поместите все свои статические методы в один класс и назовите класс, например, Common, чтобы вам не пришлось вводить очень длинное имя,
  • или просто назовите это статически, как вы сделали в своем вопросе, например, Module::method().

В конце концов, единственный способ вызвать метод статически — через Class::method().

person Ali    schedule 03.03.2010