2013-08-12 3 views
2

Учитывая следующий код, я ищу pro и con для вызова $ this-> myStaticFunc(); vs self :: myStaticFunc();PHP Вызов статической функции

class MyClass 

    private function myPrivateFunc() { 
    ... 
    $this->myStaticFunc(); // or self::myStaticFunc(); 
    ... 
    } 

    // no need to tell me that i can't use $this in here 
    public static function myStaticFunc() { ... } 

} 

// access static function 
MyClass::myStaticFunc(); 
+0

дает вам нулевую информацию и хочет знать, стоит ли покупать черный или синий автомобиль ... – hek2mgl

+2

Они служат совершенно другим целям .... если ваша функция должна работать против экземпляра, тогда вы называете ее функция экземпляра; если нет, то вы можете использовать статическую функцию –

ответ

3

Недостатки использования $this->myStaticFunction() являются:

  • Это ясно не указывает, что вы собираетесь (-> означает, что вы делаете что-то с объектом, но вы не),
  • Это может привести к вызову чего-то, чего вы не ожидали,
  • Это, скорее всего, путает читателя (все читатели смогут точно определить, что автор не понимает базовые OO p rinciples),
  • И это просто Неправильно: статические функции относятся к классам, а не к объектам. Вызовите их через класс (включая self), а не объект.

Единственным возможным про то, что вы можете переопределить статическую функцию в дочернем классе, но это означает, что функция принадлежит объекта и не класс. В этом случае было бы более целесообразным использовать метод экземпляра.

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