6.2. Объектная модель PHP 5
PHP 5 использует перезагружаемую модель объектов с односторонним наследованием и ограничением доступа. Наследование включает взаимосвязь между классами типа "родитель-потомок". (Концепция наследования будет обсуждаться позднее в этой главе.) Если в других языках разрешено использование нескольких классов, то в PHP допускается только по одному "родителю". Кроме того, PHP поддерживает ограничение доступа к свойствам и методам. Элементы можно объявить "частными", тем самым запретив доступ к классу извне. И наконец, PHP позволяет порожденным классам перезагружать элементы порождающих их классов.
Объектная модель в PHP 5 рассматривает объекты отдельно от любого другого типа значения, которое имеется в PHP, и реализует неявное поведение типа "переход по ссылке", т.е. PHP не требует от вас явной передачи или возвращения объектов по ссылке. Объяснение перехода на объектную модель, опирающуюся на дескрипторы, детально обсуждается в конце настоящей главы. Это одна из самых важных новых возможностей PHP 5.
Кроме обеспечения более интуитивной объектной модели, всякая система, опирающаяся в своей работе на дескрипторы, имеет дополнительные преимущества: повышенную производительность, снижение потребления памяти и возросшую гибкость.
В предыдущих версиях PHP сценарии копируют объекты по умолчанию. Если такая возможность не нарушает логику вашего проекта, то PHP значительно упростит перенос больших объемов данных. Сейчас PHP перемещает только дескриптор, что требует значительно меньше времени и увеличивает производительность конкретного сценария, так как позволяет не прибегать к ненужному копированию. Преимущество производительности возрастает параллельно со сложностью иерархии объектов. Чем меньше копий, тем меньше для них требуется памяти. Это может привести к возрастанию производительности системы в целом, поскольку больше памяти остается в распоряжении всех остальных процессов.
Процессор Zend Engine 2 обладает еще большей гибкостью. В результате новой разработки появились деструкторы, методы классов, которые срабатывают непосредственно перед разрушением объекта. Это также дает преимущества с точки зрения использования памяти, так как PHP теперь точно "знает", когда не осталось ссылок на объект, позволяя ему освободить память для других целей.
6.3. Определение класса
Определяя класс, вы на самом деле создаете шаблон для создания объектов. В нем дается перечень всех переменных, которые будет иметь данный объект, и все функции, которые потребуются ему для работы. Они называются свойствами и методами соответственно. На рис. 6.1 показана форма определения классов. Заметим, что внутри фигурных скобок можно объявлять только переменные или функции. В листинге 6.1 показано объявление класса с тремя свойствами и двумя методами.
I Листинг 6.1. Объявление класса_
<?php
//Определить класс для отслеживания активности пользователей
class User
{
//свойства public $name;
private $password, $lastLogin; //методы
public function _construct($name, $password)
{
$this->name = $name; $this->password = $password; $this->lastLogin = time(); $this->accesses++;
}
// получить дату последнего входа в систему function getLastLogin()
{
return(date("M d Y", $this->lastLogin));
}
}
//создать экземпляр
$user = new User("Leon", "sdf123");
// получить дату последнего входа в систему
print($user->getLastLogin() ."<br>n");
// распечатать имя пользователя
print("$user->name<br>n");
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Классы и объекты. Часть Вторая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Классы и объекты | PHP. Классы и объекты. Часть Третья. |