как вызвать статический метод в пользовательском классе magento - PullRequest
3 голосов
/ 03 марта 2010

У меня есть пользовательская модель в пользовательской модели 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

1 Ответ

5 голосов
/ 03 марта 2010

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

Таким образом, ваше лучшее лучшее, чтобы

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

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

...