Что такое static в PHP ООП?

280
25 мая 2018, 17:40

Кто нибудь, розкажите мне что такое static в ООП, и для чего он используется, если можно то и с примером.

Answer 1

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

Я обычно на уроках привожу такой пример – Класс, это чертеж нашего дома, конкретные дома построенные это объекты. Статические свойства это например цвет чернил, которыми чертеж был сделан, или тип бумаги, на котором начертили схему. А цвет конкретных домов и например этажность дома это уже конкретные свойства объектов.

Во-вторых зарезервированное слово static используется для позднего статического связывания. Документация

В принципе из названия все понятно. Можно провести аналогию с объектами и сразу станет понятно. $this обращается к текущему объекту, а parent обращается к свойствам или методам родительского класса. Так вот ту же задачу выполняет слово staticself для обращения к текущему классу, то есть тому, в котором написан код. А static используем, что бы при наследовании получить доступ к классу, который наследовал статические методы или свойства.

И в третьих (не относится к ООП). Слово static используется для обозначения статичных переменных. Документация

Они нужны, что бы сохранить значения локальных переменных между вызовами. В целом, это как приватные свойства в ООП.

Примеры все есть в документации, как кстати и все описание и даже на русском языке! Не ленитесь, всегда смотрите первоисточник, не доверяйте на 100% книгам и форумам.

Answer 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.

READ ALSO
Не могу выдернуть нужный <a> с помощью PHPQuery

Не могу выдернуть нужный <a> с помощью PHPQuery

Создаю новый dom с ссылки и пытаюсь выдернуть оттуда все элементы но на выходе получаю 0 объектов хотя тем же simple html dom спокойно дергаю ихКусок...

220
выборка данных из localhost phpmyadmin

выборка данных из localhost phpmyadmin

есть два селекта и база данных в localhost phpmyadmin никак не могу додуматься как сделать так, чтобы при выборе 1 из видов работ ( в option) с права появлялась...

245
Генераторы в PHP - как это реализовать?

Генераторы в PHP - как это реализовать?

1 Создать анонимную функцию и поместить её в переменнуюФункция должна принимать массив и возвращать среднее значение всех элементов

214
Пустые места в категории товара woocommerce [требует правки]

Пустые места в категории товара woocommerce [требует правки]

Помогите, как исправить, появляются пустые места в категории товаровПриложу скриншоты

192