При объявлении свойства тип данных не объявляется. Эта переменная, как и все другие переменные в 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.