Еще в ноябре 2005 года на встрече в Париже разработчики обсудили новые возможности следующей, шестой, версии PHP. Интересует ли Вас, какой будет эта версия? Примите участие в опросе, который проводится на сайте рассылки.
[опрос на английском языке: PHP 6: Are you interesting in? (PHP 6: Вы зантересованы?) - YES (ДА) - NO (НЕТ)]
PHP 5: Новые возможности.
Подсказка типа
The Pterodactyl
Copyright 2006 Pterodactyl's School
Copyright 2006 Pterodactyl's School.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
31.03.2006
История переиздания
Издание 1.00
[ Дата ]
Первоначальная версия.
Аннотация
Рассмотрена возможность подсказки типа аргумента, получаемого функцией или методом класса.
В ряде случаев (особенно, при разработке и отладке) бывает полезно проверять тип аргументов, полученных функцией или методом, чтобы избежать нежелательных попыток обрабатывать данные тех типов, для обработки которых данная функция или метод не предназначены. Далее будем обсуждать те случаи, когда получаемый аргумент является объектом или массивом.
В PHP 4 для этого было необходимо использовать довольно неуклюжую конструкцию с использованием функции is_a() или is_array().
function foo($obj)
{
if (!is_a($obj, 'Foo')) {
die('Invalid object.');
}
// ...
}
PHP 5 позволяет при желании подсказывать ожидаемый класс объекта.
function foo(Foo $obj)
{
// ...
}
Теперь попытка передать функции объект любого другого класса приведет к возникновению фатальной ошибки.
<?php
class Foo {
}
function test(stdClass $obj)
{
return true;
}
$foo = new Foo;
test($foo);
?>
Fatal error: Argument 1 must be an instance of stdClass
Аналогичным образом можно подсказывать класс объекта и для аргументов методов.
Начиная с PHP 5.1, можно подсказывать не только класс объектов, но и принадлежность аргументов к массивам.
function foo(array $a)
К сожалению, подсказка о принадлежности аргументов к другим типам данных в настоящее время не поддерживается.