Статические члены класса
При использовании классов и объектно-ориентированного подхода также можно создавать статические члены класса. Такие члены существуют в единственном экземпляре и разделяются всеми экземплярами (объектами) одного и того же класса. В этом и заключается весь смысл их существования.
Статическое свойство класса недоступно через обращение $this->property или $obj‑>property. Вместо этого следует использовать немного необычный синтаксис:
ИмяКласса: :$property или self: : $property(при вызове из метода класса).
Статический метод во время своего запуска не получает ссылку $this, поэтому он может работать только со статическими членами (свойствами и другими методами) своего класса.
// класс, который "считает", сколько его экземпляров существует в текущий момент
<?php ## Использование статических членов класса,
class Counter {
// Скрытый статический член класса — общий для всех объектов,
private static $count = 0;
// Конструктор увеличивает счетчик на 1.
public function __construct() { self::$count++; }
// Деструктор же — уменьшает.
public function __destruct() { self::$count—; }
// Статическая функция, возвращает счетчик объектов,
public static function getCount() { return self::$count; }
)
// Создаем б объектов.
for ($objs=array(), $i=0; $i<6; $i++)
$objs[] = new Counter();
echo "Сейчас существует {$objs[0]->getCount()} объектов.<br>";
// Удаляем один объект.
$objs[5] = null;
// Счетчик объектов уменьшится!
echo "А теперь — {$objs[0]->getCount()} объектов.<br>";
// Удаляем все объекты.
$objs = array();
// Другой способ вызова статического метода — с указанием класса.
// Это очень похоже на вызов функции из библиотеки,
echo "Под конец осталось — ".Counter::getCount()." объектов.<br>";
?>
Дата добавления: 2015-08-26; просмотров: 604;