2010-03-03 44 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()