Как стать автором
Обновить

Доступ к статическим данным

Время на прочтение 2 мин
Количество просмотров 2.7K
Начиная с версии 5.3 появилась возможность обращаться к статическим данным классов используя переменную. Благодаря этому мы практически забыли об ошибке «syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM», которая возникала при попытке использования оператора "::" как-то «не так».

Но, как мне кажется, об открывшихся возможностях знают не все.

Создадим интерфейс, класс и объект для экспериментов.

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 имея «на руках» объект.
Теги:
Хабы:
+4
Комментарии 9
Комментарии Комментарии 9

Публикации

Истории

Работа

PHP программист
171 вакансия

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн