PHP программирование → Чем PHP 5.4 отличается от PHP 5.x
Добавлена поддержка трейтов.
Начиная с версии 5.4.0 PHP вводит инструментарий для повторного использования кода, называемый трейтом.
Трейт (англ. trait) — это механизм обеспечения повторного использования кода в языках с поддержкой единого наследования, таких как PHP. Трейт предназначен для уменьшения некоторых ограничений единого наследования, позволяя разработчику повторно использовать наборы методов свободно, в нескольких независимых классах и реализованных с использованием разных архитектур построения классов. Семантика комбинации трейтов и классов определена таким образом, чтобы снизить уровень сложности, а также избежать типичных проблем, связанных с множественным наследованием и c т.н. mixins.
Трейт очень похож на класс, но предназначен для групирования функционала хорошо структурированым и последовательным образом. Невозможно создать самостоятельный экземпляр трейта. Это дополнение к обычному наследованию и позволяет сделать горизонтальную композицию поведения, то есть применение членов класса без необходимости наследования.
Пример #1 Пример использования трейта
<?php
trait ezcReflectionReturnInfo {
function getReturnType() { /*1*/ }
function getReturnDescription() { /*2*/ }
}
class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* ... */
}
class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* ... */
}
?>
Добавлен короткий синтаксис объявления массивов.
Например,
$a = [1, 2, 3, 4]; или $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];
Добавлена возможность разыменования массивов, возвращаемых функциями.
Например:
foo()[0]
.Классы для создания анонимных функций
(Closures) теперь поддерживают $this.
Анонимные функции, также известные как замыкания (closures), позволяют создавать функции, не имеющие определенных имен. Они наиболее полезны в качестве значений callback-параметров, но также могут иметь и множество других применений.
<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
// выведет helloWorld
?>
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
// выведет helloWorld
?>
Оператор <?= теперь доступен всегда, несмотря на значение php.ini опции short_open_tag.
Добавлена возможность получения доступа к члену класса при создании экземпляра.
Например:
(new Foo)->bar()
Теперь поддерживается такой синтаксис:Class::{expr}()
Добавлен бинарный формат задания чисел
например: 0b001001101
Улучшены сообщения об ошибках разбора и предупреждения о несовместимых аргументах.
Расширение по работе с сессиями теперь может отслеживать процесс загрузки файлов.
Встроенный веб-сервер в режиме командной строки для разработчиков.
Class::{expr}()
Добавлен бинарный формат задания чисел
например:
0b001001101




Представляю Вашему вниманию новую версию ImageCMS 2.5.0.
С радостью представляем Вашему вниманию новую версию ImageCMS 2.1.6.
ImageCMS — бесплатная