Пару дней назад решил перейти с версии php 5.2.17 на php 5.4.0. Главным образом мне было интересно начать пользоваться пространствами имен. Но помимо пространства имен там еще есть много интересных примочек которые раньше приходилось писать самому а сейчас это уже всё есть.
Итак начнём.
Пространство имён:
Что это такое ? Представим разные файлы. В каждом файле мы определяем какую то функцию, классы, константы. Когда таких файлов много, нам становится тяжелее подбирать имена для них. Мы прибегаем к разным уловкам, таким как называем функции с префиксами,разделяем с помощью символа «_» . А как часто у вас было что какие то переменные переопределяются в ходе работы программы ?
Пространство имен позволяет нам разграничить рабочие области в файлах.
Итак, определяется пространство ключевым словом namespace
К примеру:
namespace APPLICATION;
Если раньше используя метод класса мы писали $obj->method, то теперь с учётом пространства имен это будет выглядеть следующим образом:
$obj = new APPLICATION\OurObjec;
$obj->ourmethod();
где APPLICATION наше пространство имен, а OurObject класс объявленный в пространстве имен APPLICATION.
Так же если мы напишем строчку use APPLICATION\OurObject as OurObject, то мы сможем обратиться к нашему классу как раньше. Т.е
$OurObject = new OurObject;
$OurObject->ourmethod();
Массивы
Раньше мы могли использовать массивы написав ключевое слово array() либо$array[],$array[$key].
В новой же версии php 5.4 мы можем проще обращаться с массивами :
$array = [1, 2, 3, 4]; или $array = [‘one’ => 1, ‘two’ => 2, ‘three’ => 3, ‘four’ => 4];
Обратите внимание нет необходимости использовать ключевое слово array
Функции
На мой взгляд ну очень полезная возможность это обращаться к функции как к массиву.
Например
<pre><code>function ourFunction() { return array('one', 'two', 'three'); } ourFunction()['1'];
Возвратит ‘one’.
Данная фича достаточно полезна при выводе строки из базы данных например.
Раньше чтобы получить значение какого либо элемента массива возвращаемого функцией нам необходимо было
приравнять ее к переменной. Теперь можно напрямую обращаться.
Родная поддержка Unicode
Теперь все строковые функции поддерживают unicode символы.
Продолжение следует…