popov . dev

Main

Library

Articles

Как использовать...

Как использовать модификаторы доступа в ООП на PHP

Что такое модификаторы доступа? Свойства и методы могут иметь модификаторы доступа, которые позволяют изменять способ доступа к ним. В PHP существует три модификатора доступа: public, private и protected.

Public

Значение по умолчанию - public: это означает, что если вы ничего не задаете, свойство или метод являются общедоступными.

class X {
    $a;
    $b;

    function aa()
    {
        echo $this->a;
    }
}

Разберем пример, допустим, если бы мы написали:

$ax = new X();
echo $ax->a;

Или так:

$ax->aa();

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

Private

Частные свойства или методы, напротив, недоступны вне класса.

class X {
    private $a;
    private $b;

    function aa()
    {

    }

    private function bb()
    {
        return "bbb";
    }
}

В приведенном выше классе мы не можем получить значение $a с помощью echo $a->a, потому что $a является публичным свойством.

Мы также не можем использовать echo для отображения $a->bb() напрямую.

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

Пример

class X {
    private $a;
    private $b;

    function aa()
    {

    }

    private function bb()
    {
        return "bbb";
    }

    public function bbb()
    {
        return $this->bb();
    }
}

В приведенном выше примере мы можем использовать функцию bbb() для возврата значения функции bb()

Protected

Итак, теперь вы знакомы с основным различием между частным и публичным. Но есть и другое, менее очевидное различие между ними.

Одно из применений private и protected заключается в контроле того, какие свойства и методы будут наследоваться, а какие нет.

Публичные свойства и метод наследуются всеми дочерними классами. В то время как частные свойства и методы не могут быть унаследованы подклассом. Однако частные свойства и методы не могут наследоваться подклассами, и они не имеют ничего общего с вашими дочерними классами. Если вы хотите, чтобы подклассы наследовали свойство, но не хотели, чтобы они были доступны за пределами класса, вам следует вместо этого установить для них значение protected.

Comments

In order to leave your opinion, you need to register on the website