PHP с нуля. Урок #8.1. Модификаторы доступа и $this

Премиум
Премиум
Статус
Оффлайн
Регистрация
3 Дек 2017
Сообщения
234
Реакции
201
Сегодня мы с вами поговорим о модификаторах доступа, и о том, как получить доступ к свойствам и методам класса изнутри.
Поехали!

Модификаторы Доступа позволяют управлять доступом к методам и свойствам. Видимость свойств и методов может быть определена ключевыми словами: public, private, protected.
  • Модификатор public позволяет обращаться к свойствам и методам отовсюду.
  • Модификатор private позволяет обращаться к свойствам и методам только внутри текущего класса.
  • Модификатор protected позволяет обращаться к свойствам и методам только текущего класса и класса, который наследует свойства и методы текущего класса.
Чтобы использовать модификатор доступа, нужно перед именем переменной или функции класса поставить его название (public, private или protected).
Например, создадим класс:
Код:
Expand Collapse Copy
class SomeClass {
    public $publ;
    private $priv;
    
    public function publFunc() {
        echo "Работает!";
    }
    private function privFunc() {
        echo "Работает!";
    }
}
$someObj = new SomeClass;
Теперь попробуем установить и вывести значение public-переменной:
Код:
Expand Collapse Copy
$someObj->publ = 5;
echo $someObj->publ;
Этот код выведет 5, так как переменная $publ - public.
Но если мы попытаемся тоже самое сделать с $priv:
Код:
Expand Collapse Copy
$someObj->priv = 5;
echo $someObj->priv;
То тут будет ошибка, т.к. $priv - private.

Тоже самое и с функциями.
Чтобы получить доступ к свойствам и методам изнутри самого класса, необходимо использовать указатель $this.
Рассмотрим пример со следующим классом:
Код:
Expand Collapse Copy
class SomeClass {
    private $name;
    public function getName() {
        return $this->name;
    }
    public function setName($name) {
        $this->name = $name;
    }
}
$someObj = new SomeClass;
Напрямую обратиться к $someObj->name мы не можем, т.к. она private. Но, мы к ней можем обратиться изнутри класса, например, с помощью методов:
Код:
Expand Collapse Copy
$someObj->setName("David");
echo $someObj->getName();
Данный код выведет "David", как и ожидалось.
На сегодня все
_________________________________________________________________________
Если у вас возникли вопросы - пишите в теме. Надеюсь, отвечу :)
Если вы нашли у меня ошибку - пишите в ЛС, чтобы не засорять тему - поправлю.
Если вы хотите дополнить меня - пишите в теме, либо в ЛС - добавлю, оставлю credits.
 
Назад
Сверху Снизу