При объявлении свойства тип данных не объявляется. Эта переменная, как и все другие переменные в PHP, может хранить целые или вещественные числа, строки или даже другой объект. В зависимости от ситуации рядом с объявлением свойства можно поместить уместный комментарий о предназначении типа данных.
При объявлении метода это делается так, как при объявлении функции за пределами объявления класса. Как методы, так и свойства действуют только в пределах своих собственных диапазонов или пространств имен. Это значит, что можно создавать методы, имена которых совпадают с именами функций, объявленных за пределами определения класса, и конфликтов возникать не должно. Например, класс может определять метод date. Но методы нельзя именовать с использованием ключевых слов PHP (for или while).
Методы класса могут содержать то, что в PHP называется подсказками типа (type hints). Подсказка типа представляет собой класс, который предшествует аргументу метода. Если сценарий вызывает метод и передает переменную, которая не является экземпляром указанного класса, PHP генерирует фатальную ошибку. Подсказку типа можно не указывать для других типов, таких как целое, строковое или логическое. В настоящее время идут споры о том, включать ли в подсказки типов тип массива.
Подсказка типа является ссылкой для проверки типа аргумента с помощью специальных функций или оператора instanceof. Вы всегда можете вернуться к этому методу. Собственноручная проверка типа позволит вам, например, сделать аргумент целым. В листинге 6.2 демонстрируется использование подсказок типа для того, чтобы класс Assembler создавал только экземпляры Widget.
| Листинг 6.2. Подсказки типа_
<?php
//Для класса Widget требуется вспомогательный класс class Widget
{
public $name='none'; public $created=FALSE;
}
//Класс Assembler создает только экземпляры widget class Assembler
{
public function make(Widget $w)
{
print("Создание $w->name<br>n");
$w->created=TRUE;
}
}
//Создать widget $thing = new Widget; $thing->name = 'Gadget'; //Собрать widget Assembler::make($thing);
?>
Кроме переменных, передаваемых как аргументы, методы содержат специальную переменную this, которая предназначена для использования с определенным экземпляром класса. Переменную this необходимо использовать для ссылки на свойства и другие методы объекта. В некоторых объектно-ориентированных языках программирования считается, что неквалифицированные переменные имеют отношение к локальному свойству, но в PHP любые переменные, на которые делается ссылка в пределах метода, являются локальными для этого диапазона. Как используется переменная this в конструкторе для класса user, см. в листинге 6.1.
Перед объявлением свойств и методов PHP проверяет тип доступа, а именно: public, private и protected. Кроме того, элемент можно объявить с ключевым словом static, а можно объявить константы в пределах классов с использованием константы const. Обсуждение различных типов доступа будет продолжено в этой главе позднее. Свойства можно перечислить в одной строке, разделив их запятыми. В листинге 6.1 класс User хранит два свойства типа доступа private, объявленные как private $password, $lastLogin.
ТОП-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. Классы и объекты. Часть Четвёртая. |