Область видимости

public - открытый доступ (по умолчанию, то же что использовать var)

protected - только внутри класса или потомков

private - только внутри класса

Объекты одного класса имеют доступ к защищенным свойствам/методам друг друга

Объявление свойств и методов класса статическими (static) позволяет обращаться к ним без создания экземпляра класса. псевдо-переменная $this не доступна внутри метода, объявленного статическим. Доступ к статическим свойствам класса не может быть получен через оператор ->.

Оператор разрешения области видимости или просто "двойное двоеточие":: - это лексема, позволяющая обращаться к статическим свойствам, константам и перегруженным свойствам или методам класса. При обращении к этим элементам извне класса, необходимо использовать имя этого класса. Для обращения к свойствам и методам внутри самого класса используются ключевые слова self, parent и static.

Абстрактные классы

abstract class AbstractClass

{

/* Данный метод должен быть определён в дочернем классе */

abstract protected function getValue();

abstract protected function prefixValue($prefix);

/* Общий метод */

public function printOut() {

print $this->getValue(). "\n";

}

}

При наследовании от абстрактного класса, все методы, помеченные абстрактными в родительском классе, должны быть определены в классе-потомке; кроме того, область видимости этих методов должна совпадать (или быть менее строгой).

Интерфейсы - как в яве

объявляются как классы, но вместо class - interface. Содержат только публичные методы. По сути близки к абстрактным классам. Могут содержать константы, но не перекрываются реализующими классами. Могут расширять друг друга (допустимо множественное наследование).

class Child implements example_interface {}

PHP 5 предоставляет такой способ объявления объектов, который дает возможность пройти по списку элементов данного объекта, например, с помощью оператора foreach. По умолчанию, в этом обходе (итерации) будут участвовать все видимые свойства объекта. (внутри класса - все свойства, снаружи - только паблики и т.д.)

Магические методы вызываются автоматически в определенных ситуациях

__construct(), __destruct() - создание/уничтожение

__call(), __callStatic(), __get(), __set(), __isset(), __unset() - "перегрузка" свойств и методов - динамическое их создание

__sleep() и __wakeup() - используются при сериализации/десериализации объекта

__toString() - преобразование в строку

__invoke() - при выполнении объекта как функции

__set_state() - для var_export()

__clone() - при клонировании объектов вызывается у клона для переинициализации свойств

В PHP5 объекты передаются всегда как ссылки. Присваивание объектов тоже происходит по ссылке.

Создание копии - клонирование объектов $copy_of_object = clone $object;

PHP 5 представляет ключевое слово final, разместив которое перед объявлениями методов класса, можно предотвратить их переопределение в дочерних классах. Если же сам класс определяется с этим ключевым словом, то он не сможет быть унаследован. Свойства не могут быть финализированы

При использовании оператора сравнения (==), свойства объектов просто сравниваются друг с другом, а именно: два объекта равны, если они содержат одинаковые свойства и одинаковые значения, и являются экземплярами одного и того же класса.

С другой стороны, при использовании оператора идентичности (===), переменные объектов считаются идентичными тогда и только тогда, когда они ссылаются на один и тот же экземпляр одного и того же класса.

Сериализация объектов - сохранение объектов между сессиями

Функция serialize() возвращает строковое представление любого значения, которое может быть сохранено в PHP. Функция unserialize() использует эту строку для востановления исходного значения переменной. Использование serialize для сериализации объекта сохранит имя класса и все его свойства, однако методы не сохраняются.

Для того, чтобы иметь возможность сделать unserialize() для объекта нужно чтобы класс этого объекта был определен заранее.

=====================================


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: