Итак, потрясшая весь мир радостная весть — вышла альфа PHP 5.4. Такими темпами есть надежда, что не пройдёт и десяти лет, как появится стабильный релиз.
Данная новость обсосана уже множество раз и ещё раз повторять это смысла никакого нет. Но так, как я давно ничего не писал в этот бложик, нужно начать возвращение хоть с чего-нибудь.
Какие же прелести нас ожидают:
1. Traits: сколько бы задроты «чистого ООП» не гневались, а вещь в умелых и умеренных руках вполне себе полезная. Реализация опять может вызывать вопросы, но всё же лучше, чем ничего.
2. Array dereferencing: всего пяток лет обещаний и вот оно. Вот так вот уже было можно: func()->method()
, вот так тоже: $A['var']
, и даже так: $A['var']()
. Теперь можно так: func()['var]
. Ещё пара нововведений и пых обгонит питон по языковым плюшкам.
Единственно может напрягать тот факт, что обязательно найдётся большое количество индивидуумов, которые начнут делать следующее:
function get($id) {
// Дикий запрос в базу
}
echo 'Имя: '.get(1)['name'];
echo 'Фамилия: '.get(1)['surname'];
echo 'Вся фигня: '.get(1)['fignya']; |
function get($id) {
// Дикий запрос в базу
}
echo 'Имя: '.get(1)['name'];
echo 'Фамилия: '.get(1)['surname'];
echo 'Вся фигня: '.get(1)['fignya'];
Ведь зачем вводить промежуточную переменную, когда можно без неё. Синтаксический сахар же.
Впрочем, это уже проблемы этих индивидуумов.
3. Поддержка DTrace: несомненно отличнейшая вещь, которая сделает нашу жизнь намного лучше.
А может и не сделает. Я, если честно, вообще не знаю, что это такое.
Но возможность писать вместе с PHP на языке D, который совсем не тот язык D, а совсем другой язык D, конечно доставляет.
4. Чистка мусора: register_globals, allow_call_time_pass_reference, register_long_arrays, session_is_regisitered(), session_registered(), session_unregister().
Давно пора, но единственно печалит удаление allow_call_time_pass_reference
. Это, когда разрешается по старинке решать в момент вызова как передавать аргумент в функцию: по ссылке или по значению. Без включения этой настройки тоже разрешается, но интерпретатор начинает бурчать себе под нос про DEPRECATED
.
Мне оно не нужно, но иногда приходится в чём то старом копаться. Что характерно, все остальные хреновены (register_globals, long_arrays) давно не встречаются. И в случае чего легко эмулируются. А time pass reference вылезает зачастую и так просто от него не избавишься.