Необходимо определить метод, вызываемый во время создания нового экземпляра класса. Например, требуется автоматически загружать информацию из базы данных во время создания объекта.
Определите метод с тем же самым именем, что и имя класса:
class user {
function user($username , $password) {
...
}
}
Если функция имеет то же имя, что и класс, она действует как конструктор:
class user {
var $username;
function user($username , $password) {
if ($this -> validate_user($username , $password)) {
$this -> username = $username;
}
}
}
$user = new user(' Grif ' , ' Mistoffelees '); // используем встроенный конструтор
PHP не всегда поддерживал конструкторы. Поэтому программисты создавали псевдоконструкторы, следуя соглашению об именах и вызывая эти функции после создания объекта:
class user {
...
init($username , $password) { ... }
}
$user = new user( );
$user -> init($username , $password);
Увидев что-нибудь подобное, знайте, что это, скорее всего, унаследованный код.
Однако стандартное наименование всех конструкторов облегчает вызов родительских конструкторов (поскольку нет необходимости знать
имя родительского класса), а также не требует модификации конструктора, если изменяется имя класса. В Zend Engine 2 соглашения об именах конструкторов были изменены, и новое имя конструктора теперь __construct(). Однако в целях обратной совместимости, если такой метод не найден, PHP пытается вызвать конструктор с тем же
именем, что и имя класса.
Документацию по конструкторам объектов на http://www.php.net/oop.constructor.