Начиная с версии 5.3 появилась возможность обращаться к статическим данным классов используя переменную. Благодаря этому мы практически забыли об ошибке «syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM», которая возникала при попытке использования оператора "::" как-то «не так».
Но, как мне кажется, об открывшихся возможностях знают не все.
Создадим интерфейс, класс и объект для экспериментов.
Код, который работает как в 5.3 так и ранее. Имея в наличии объект необходимо было выяснить его класс.
Код, который работает начиная с PHP 5.3. Теперь нет необходимости указывать класс.
Константы и статические методы можно было объявлять в интерфейсах начиная с самого начала появления интерфейсов в PHP. Но чтобы работать с ними нужно было указывать имя интерфейса или класса. Сейчас же можно использовать объект для доступа к этим данным. Можно сказать, что начиная с версии 5.3 константы и статические методы стали полноценной частью интерфейса.
Благодаря этому можно сократить количество употреблений имён классов и интерфейсов. А так же использовать автодополнение IDE имея «на руках» объект.
Но, как мне кажется, об открывшихся возможностях знают не все.
Создадим интерфейс, класс и объект для экспериментов.
interface bar{ const SOME_CONST = 'SOME_CONST'; static public function static_public_function(); } class foo implements bar{ static public $static_public_property = 'static_public_propery'; static public function static_public_function(){ return 'static_public_function'; } } $object = new foo();
Код, который работает как в 5.3 так и ранее. Имея в наличии объект необходимо было выяснить его класс.
echo foo::SOME_CONST . PHP_EOL; // SOME_CONST echo foo::$static_public_property . PHP_EOL; // static_public_property echo foo::static_public_function() . PHP_EOL; // static_public_function echo bar::SOME_CONST . PHP_EOL; // SOME_CONST
Код, который работает начиная с PHP 5.3. Теперь нет необходимости указывать класс.
echo $object::$static_public_property . PHP_EOL; // static_public_property echo $object::SOME_CONST . PHP_EOL; // SOME_CONST echo $object::static_public_function() . PHP_EOL; // static_public_function
Константы и статические методы можно было объявлять в интерфейсах начиная с самого начала появления интерфейсов в PHP. Но чтобы работать с ними нужно было указывать имя интерфейса или класса. Сейчас же можно использовать объект для доступа к этим данным. Можно сказать, что начиная с версии 5.3 константы и статические методы стали полноценной частью интерфейса.
Благодаря этому можно сократить количество употреблений имён классов и интерфейсов. А так же использовать автодополнение IDE имея «на руках» объект.