При использовании классов и объектно-ориентированного подхода также можно создавать статические члены класса. Такие члены существуют в единственном экземпляре и разделяются всеми экземплярами (объектами) одного и того же класса. В этом и заключается весь смысл их существования.
Статическое свойство класса недоступно через обращение $this->property или $obj‑>property. Вместо этого следует использовать немного необычный синтаксис:
ИмяКласса: :$property или self: : $property(при вызове из метода класса).
Статический метод во время своего запуска не получает ссылку $this, поэтому он может работать только со статическими членами (свойствами и другими методами) своего класса.
// класс, который "считает", сколько его экземпляров существует в текущий момент
<?php ## Использование статических членов класса,
class Counter {
// Скрытый статический член класса — общий для всех объектов,
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>";
?>
Создать для задания из Лекции№9 классы User(для клиента, который регистрируется на форуме), Subject(для тем форума с краткой аннотацией к каждой), Message(класс для сообщения, содержащий такие поля, как сообщение, пользователь, время отправки). Снабдить каждый класс необходимыми функциями. Протестировать на примеры из Лекции№9.
Наследование — одно из основных понятий ООП. При помощи механизма наследования вы можете создавать новые типы данных взяв за основу некоторый уже существующий класс, который в этом случае называют базовым (base class). Получившийся же класс носит имя производного (derived class).
Наследование в ООП используется для нескольких различных целей.
1. Добавление в существующий класс новых методов и свойств или замена уже существующих. При этом "старая" версия класса уже не будет использоваться; ценность представляет именно новый, расширенный класс.
2. Наследование в целях классификации и обеспечения однотипности поведения различных классов. Новый, производный класс обладает теми же самыми "особенностями", что и базовый, и может использоваться везде вместо последнего.