Мне просто интересно, какие преимущества используют public static function
или private static function
, а не просто public function
или private function
?PHP | Почему я должен использовать статическую/приватную статическую функцию вместо функции public/private?
ответ
«Обычные» методы (обычно называемые экземплярами методов) вызываются на экземпляр класса, в котором они определены. Метод всегда будет иметь доступ к его объекту через $this
, и поэтому он может работать с данными, переносимыми этим объектом (и даже изменять его). Это основной аспект объектно-ориентированного программирования, и именно это делает класс более чем просто связкой данных.
Звонки на статические методы, с другой стороны, не связаны с конкретным объектом. Они ведут себя как обычные функции в этом отношении; действительно, единственное отличие состоит в том, что они могут быть помечены private
, а также иметь доступ к закрытым методам и переменным в экземплярах собственного класса. Статические функции - это просто расширение процедурного программирования.
Например, метод экземпляра вызывается на объекте:
$object = new MyClass();
$result = $object->myInstanceMethod();
Статический метод вызывается на самом классе:
$result = MyClass::myStaticMethod();
- 1. Почему я должен использовать DECLARE_DYNAMIC вместо DECLARE_DYNCREATE?
- 2. Почему я должен использовать url.openStream вместо url.getContent?
- 3. Почему я не должен использовать функцию mail() PHP?
- 4. Почему я должен использовать BeginWrite вместо Write?
- 5. Почему я должен использовать git вместо svn?
- 6. Почему я должен использовать char вместо varchar?
- 7. Почему я должен использовать & вместо &?
- 8. Почему я должен использовать перечисления вместо строк?
- 9. Почему я должен использовать jQuery вместо GWT?
- 10. Почему я должен использовать переменную вместо «0»?
- 11. Почему я должен использовать определение jQuery вместо $?
- 12. Почему я должен использовать ints вместо float?
- 13. Почему я должен использовать var вместо типа?
- 14. Почему я должен использовать POST вместо GET?
- 15. Почему я должен использовать «_object» вместо «объекта»
- 16. Почему я должен использовать «я» в функции?
- 17. Почему я не могу переслать статическую функцию?
- 18. Фальши: Почему я должен использовать !!! вместо ! (3 вместо 1 взрыва)
- 19. Почему я должен использовать расходящиеся функции?
- 20. Должен ли я удалить статическую функцию из моего кода?
- 21. Должен ли я использовать str_replace вместо substr?
- 22. Должен ли я использовать PHP SQLSRV-функции?
- 23. что я должен использовать вместо Directory.SetCurrentDirecory?
- 24. Почему я должен использовать [ProtoInclude]?
- 25. Почему я должен использовать DoublyLinkedList в PHP?
- 26. почему я должен использовать java с php
- 27. Почему я должен использовать PHP Framework
- 28. Должен ли я использовать функцию unset внутри функции?
- 29. Почему я должен «возвращать» функцию?
- 30. Почему я должен использовать git вместо традиционной TFS?
Это не вопрос преимущество или недостаток. Кроме того, вы искали сайт? – BoltClock
вам не нужно создавать объект для использования статических методов. И есть много связанных вопросов! – meze
Да, я читал некоторые из сайтов PHP Manual, но я, кажется, не понимаю, зачем использовать статические методы, я только понял, что вместо вызова публичной функции, такой как этот '->', я могу сделать это '::' и некоторую другую информацию, которую я прочитал о статических методах на сайте PHP php ... – Roland