Модификаторы доступа
В отличие от РНР 4, в РНР версии 5 существуют три модификатора ограничения доступа: public, protected и private. Их можно указывать перед описанием метода или свойства класса.
1. public: открытый доступ. Члены класса, помеченные ключевым словом public, доступны для использования извне класса (например, из вызывающей программы).
class Hotel {
public $exit;
public function escape() {
echo "Let's go through the {$this->exit}!";
}
}
$theLafayette = new Hotel();
$theLafayette->exit = "main wet wall"; // допустимо
$theLafayette->escape(); // допустимо
В РНР по умолчанию подразумевается модификатор public. Таким образом, если вы не укажете никакого модификатора при описании метода или свойства (например, воспользуетесь ключевым словом var), член класса будет доступен для вызывающей программы.
2. Private:доступ только из методов класса.С использованием ключевого слова private ( "закрытый") вы можете сделать члены касса "невидимыми" из вызывающей программы, будто бы их и нет. В то же время, методы "своего" класса могут обращаться к ним без всякого ограничения.
class Hotel {
private $exit;
public function escape() {
$this->findWayOut(); // допустимо
echo "Let's go through the {$this->exit}!"; // допустимо
}
public function lock() { $this->exit = null; }
private function findWayOut() {
$this->exit = "main wet wall"; //допустимо
}
}
$theLafayette = new Hotel();
$theLafayette->findWayOut(); // Ошибка! Доступ закрыт!
$theLafayette->escape(); // допустимо
$theLafayette->exit = "hotel doors"; // Ошибка! Доступ закрыт!
Модификатор private включает максимально возможные ограничения на доступ к членам класса. Он разрабатывался специально для того, чтобы запретить прямое изменение свойств объекта, а также доступ к различным служебным методам.
Существует один интересный прием применения private-методов класса — это объявление конструктора или деструктора "личным". При наличии private-конструктора объекты класса нельзя будет создать из вызывающей программы, зато это можно делать из какого-нибудь метода класса. Соответственно, объект, имеющий private-деструктор, не может быть уничтожен ниоткуда, кроме как из одного из членов класса — иначе возникнет ошибка во время выполнения программы.
3. Protected: доступ из методов производного класса. Модификатор protected ("защищенный") с точки зрения вызывающей программы выглядит точно так же, как и private: он запрещает доступ к членам объекта извне. Однако по сравнению с private он позволяет обращаться к членам не только из "своих" методов, но также и из методов производных классов (если используется наследование). "защищенными" обычно делают лишь методы, но не свойства классов.
Дата добавления: 2015-08-26; просмотров: 618;