#php #ооп #static
Кто нибудь, розкажите мне что такое static в ООП, и для чего он используется, если можно то и с примером.
Ответы
Ответ 1
Во-первых это ключевое слово используется для обозначения статических свойств и методов класса, которые принадлежат не к конкретным объектам, а в контексте самого класса. Документация Я обычно на уроках привожу такой пример – Класс, это чертеж нашего дома, конкретные дома построенные это объекты. Статические свойства это например цвет чернил, которыми чертеж был сделан, или тип бумаги, на котором начертили схему. А цвет конкретных домов и например этажность дома это уже конкретные свойства объектов. Во-вторых зарезервированное слово static используется для позднего статического связывания. Документация В принципе из названия все понятно. Можно провести аналогию с объектами и сразу станет понятно. $this обращается к текущему объекту, а parent обращается к свойствам или методам родительского класса. Так вот ту же задачу выполняет слово static – self для обращения к текущему классу, то есть тому, в котором написан код. А static используем, что бы при наследовании получить доступ к классу, который наследовал статические методы или свойства. И в третьих (не относится к ООП). Слово static используется для обозначения статичных переменных. Документация Они нужны, что бы сохранить значения локальных переменных между вызовами. В целом, это как приватные свойства в ООП. Примеры все есть в документации, как кстати и все описание и даже на русском языке! Не ленитесь, всегда смотрите первоисточник, не доверяйте на 100% книгам и форумам.Ответ 2
Он делает поля(свойства) или методы членами класса, именно класса, не объекта а класса, и нам можно будет обращаться к таким методам и свойствам с помощью конструкции двойного двоеточия ClassName::methodOrElement, то есть не реализуя и не создавая новый объект, при этом доступ из объектов, к таким свойствам, будет не доступен. Ну основе таких методов реализуют например паттерн Singleton(Одиночка). class Singleton { private static $instance; public static function getInstance() { if(is_null(self::$instance)) { self::$instance = new self(); } return self::$_nstance; } private function __construct() { //code } } Тут для реализации одиночки, используется и свойства и методы Static. Подробнее http://php.net/manual/ru/language.oop5.static.php.
Комментариев нет:
Отправить комментарий