Кто нибудь, розкажите мне что такое static в ООП, и для чего он используется, если можно то и с примером.
Во-первых это ключевое слово используется для обозначения статических свойств и методов класса, которые принадлежат не к конкретным объектам, а в контексте самого класса. Документация
Я обычно на уроках привожу такой пример – Класс, это чертеж нашего дома, конкретные дома построенные это объекты. Статические свойства это например цвет чернил, которыми чертеж был сделан, или тип бумаги, на котором начертили схему. А цвет конкретных домов и например этажность дома это уже конкретные свойства объектов.
Во-вторых зарезервированное слово static используется для позднего статического связывания. Документация
В принципе из названия все понятно. Можно провести аналогию с объектами и сразу станет понятно. $this обращается к текущему объекту, а parent обращается к свойствам или методам родительского класса. Так вот ту же задачу выполняет слово static – self для обращения к текущему классу, то есть тому, в котором написан код. А static используем, что бы при наследовании получить доступ к классу, который наследовал статические методы или свойства.
И в третьих (не относится к ООП). Слово static используется для обозначения статичных переменных. Документация
Они нужны, что бы сохранить значения локальных переменных между вызовами. В целом, это как приватные свойства в ООП.
Примеры все есть в документации, как кстати и все описание и даже на русском языке! Не ленитесь, всегда смотрите первоисточник, не доверяйте на 100% книгам и форумам.
Он делает поля(свойства) или методы членами класса, именно класса, не объекта а класса, и нам можно будет обращаться к таким методам и свойствам с помощью конструкции двойного двоеточия 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.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей