2010-03-03 2 views
3

У меня есть пользовательские модели в пользовательской модели 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::getModel('abc/module_className')::send($something); // this is wrong 
// or 
Mage::getModel('abc/module_className', send($something)); // with a callback or something 

ответ

5

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

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

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

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

Смежные вопросы