PHP 6
1. Окончательный отказ от register_globals и устаревших массивов вида HTTP_*_VARS.
2. Исключение magic quotes.
3. Отсутствие safe mode.
4. Больше не будет возврата по ссылке.
5. XMLReader и XMLWriter войдут в дистрибутив по умолчанию. В свою очередь, ereg будет перемещен в PECL.
6. foreach будет приспособлен для работы с многоуровневыми массивами.
7. Из функций будут возвращаться типизированные значения (вопрос не решен до конца).
8. Добавлена аналогия конструкции goto ("labeled break").
9. Будет всегда включена поддержка FastCGI.
10. Собственно, почему я сказал, что эта тема по мотивам темы про статические функции: "Вызов динамических функций как статических приведет к E_FATAL".
11. Вопрос о кодировке строк будет решаться на уровне сервера (либо все строки binary, либо все строки unicode).
Вроде основное перечислил... Подробности - вот и вот.
4. жаль. иногда использывал.
5. фиолетово - надо доставляешь. хотя если пхп-компилишь сам, то проблемней.
6. Интерестно будет глянуть
7. Спорно, очень спорно.. Зачем?
8. о_О
9. и хорошо
10. ну и правильно
Вобщем ничего особо примечательного нету..
наконец-то!!! А то такая ахинея порой написана.
2. Исключение magic quotes.
вот это совсем не понятно…
4. Больше не будет возврата по ссылке.
Интересно, кто ж мне его запретит? И каким макаром?
В свою очередь, ereg будет перемещен в PECL.
Дожили таки? Собственно, я ещё лет пять назад об этом предупреждал любителей пейсать ereg, а не preg ))))
6. foreach будет приспособлен для работы с многоуровневыми массивами.
Вообще не представляю, что это такое. Цикл - он и в африке цикл. При чём тут многоуровневые массивы?
7. Из функций будут возвращаться типизированные значения (вопрос не решен до конца).
И не решат. Это же PHP. Мы тут копья ломаем за типы данных, поэтому PHP никогда не откажется от строки.
8. Добавлена аналогия конструкции goto ("labeled break").
И вот нахрена? Для школьников, постигавших программиорование на Basic'е?
[QUOTE=Alexander92]
2. Исключение magic quotes.
вот это совсем не понятно…
[/QUOTE]
Аналогично... Разве что из соображений удобства. Ибо ходить повсюду с парой stripslashes() / addslashes() - тоже не самая приятная деятельность.
[QUOTE=mfender]
[QUOTE=Alexander92]
4. Больше не будет возврата по ссылке.
[/QUOTE]
Интересно, кто ж мне его запретит? И каким макаром?
[/QUOTE]
А вот таким: "'$foo =& new StdClass()' и 'function &foo' теперь вызовут ошибку уровня E_STRICT."
[QUOTE=mfender]
[QUOTE=Alexander92]
6. foreach будет приспособлен для работы с многоуровневыми массивами.
[/QUOTE]
Вообще не представляю, что это такое. Цикл - он и в африке цикл. При чём тут многоуровневые массивы?
[/QUOTE]
А вот вроде как будет конструкция вида
Хотя как по мне - удобство сомнительное.
Да, только добавьте к этому удобству еще ряд труднодиагностируемых ошибок, которые оно повлечет. Так что тоже еще думать надо, на самом деле, насколько это хорошо.
неправда. Все эти апостроыф перед new игнорируются с самого начала PHP5. Ибо в пресловутая $foo == ссылка на объект, либо null изначально. Это только в четвёртом PHP "ссылки" в виде апострофа ставились непосредственно перед переменной. В PHP5 сразу ссылки делались только в функциях/методах, а переменной создаваемый объект передаётся ссылкой.
не помню когда, давно это было, я даже объёмы памяти замерял. всё чётко. объекты не плодятся. поэтому у меня шустро работают объекты, у которых в полях сотни субобъектов, живущих своим порядком, и они же ещё и в соседнем объекте. Потому что они реально вообще одиноки, но в нужных местах являются лишь ссылкой, существуя в одном экземпляре.
Ликвидировали. Они об этом анонсировали ещё в 2005-м году. Даже была небольшая паника. Но потом успокоили всех, сказали, что в PHP5 всё будет актуально. Но насчёт ereg предупредили честно. Это да. А ссылки на переменные пропали сразу. Только E_Notes выпадать стали часто в случае, когда апостроф написан непосредственно перед переменной. Но в целом, всё работало и работает нормально.
У меня вон два сайта ещё вообще на PHP3 писанные есть, на PHP4 доделанные, и на PHP5 уже частично переделанные. Надо бы порядок наводить. Сайтам уже скоро 12 лет сполнится )))))
ты об этом?
$b = &$а[1];
$a[1] = $а[2];
$а[1] = &$a[3];
echo $b;
Сначала $b ссылается на значение $a[1] и равно 10. Затем в $a[1], а значит и в $b, копируется значение 20. Далее $a[1] становится ссылкой на другое значение, поэтому связь между $a[1] и $b разрывается. В $b остается 20.
Нет, я об другом:
public function DoParam(&$param){
return ++$param;
}
}
$a = 1;
$b = new c;
$c = $b->DoParam(&$a);
Так вот в этом случае $c будет таки 2, а $a, как ни странно, так и останется 1.
В нонешней версии PHP всё нормально. $a тоже равно 2.
А вот вроде как будет конструкция вида
Хотя как по мне - удобство сомнительное.
судя по питону, который пришлось выучить на новой работе, это всё прекрасно работает)) в питоне for i, j in arr: выручает))
опять же в том же питоне это помогает))
из реального кода - есть функция, возвращающая цвет, там 2 поля - цвет в RGB и название.. в пхп сейчас пришлось бы создавать переменную под возврат функции и брать потом у неё значение.. а тут я могу написать:
clr = self.organs.getColor(name=self.organType)['colorTuple']
ошибки тут (если я ключ, например, укажу неправильно) тут же и вылезут.. и без всякой трудной диагностики))
В прошлые выходные Филип Олсон отправил в список рассылки php-internals предложение о начале постепенного ухода от расширения mysql в будущих версиях php. Это, однако, не означает, что mysql уже не будет в PHP 5.4, но с версии 5.5 уже начнётся работа по обновлению документации и добавлению E_DEPRECATED ошибок к функциям mysql.
В качестве замены текущему нативному расширению предпологается использовать расширение mysqli или PDO, а возможно mysqlnd.
В результате, в будущих версиях PHP5 (начиная с 5.5 или 5.6) вызовы таких функций, как mysql_pconnect, mysql_query и так далее будут пораждать весьма неприятные уведомления E_DEPRECATED, а уже в версии PHP 6 код этих функций будет, скорей всего, полностью удалён из PHP.
А вот такие новости вам как? =)