Лучше бы они нормальные лямбды и доступ к массиву сразу после вызова функции внедрили. PHP: some_func()[1]; Вот этого мне действительно не хватает.
Радует. Когда сделают нормальный доступ к массиву, а я думаю рано или поздно они это сделают, будет вобще замечательно.
Что порадовало: 1. Apply the Late Static Binding Patch: Done (позднее связывание) 2. Introduce mysqlnd library into core and use it as a backend for PDO and mysql/mysqli extensions: Done. (новая мускульная либа, поэффективней) 3. Split off deprecation from E_STRICT into E_DEPRECATED: Done (мелочь, а приятно, новый типа ошибки - устаревшее употребление) 4. Implement David's Circular Garbage collection patch: Done (модификация сборщика мусора) 5. closures (Christian/Dmitry): Done (замыкания)
На самом деле это только основные большие внешние улучшения. Гораздо больше там перелопатили внутренние механизмы. Даже читая internal лист рассылки тяжело запомнить всё что там насобирали. 50% в 5.3 релиз не войдёт, остальное добавят в 5.3.*, будут некоторые весомые изменения в 5.3.* версиях. Это активно обсуждается и есть в RFC: http://wiki.php.net/rfc/functionarraydereferencing
Да. Я знаю, поэтому и питаю надежды. p.s. Думаю для PHP 6 останется только добавить поддержку юникода
Sergey89 Они это и хотят сделать. PHP6 по сути принесёт только Unicode, все дополнительные фитчи они планируют в PHP 5.3.*
Вон уже и доку обновляют http://ru2.php.net/manual/en/function.c ... r-func.php PHP: <?php namespace Foobar; class Foo { static public function test() { print "Hello world!\n"; } } call_user_func(__NAMESPACE__ .'::Foo::test'); // As of PHP 5.3.0 // Hello world! call_user_func(array(__NAMESPACE__ .'::Foo', 'test')); // As of PHP 5.3.0 // Hello world! ?>
PHP 5.3 стал быстрее php5.3-200807230430 vs php5.2.6 Код (Text): $ /opt/php53/bin/php Zend/bench.php simple 0.270 simplecall 0.620 simpleucall 0.781 simpleudcall 0.806 mandel 1.158 mandel2 1.377 ackermann(7) 0.691 ary(50000) 0.135 ary2(50000) 0.120 ary3(2000) 0.701 fibo(30) 2.193 hash1(50000) 0.192 hash2(500) 0.207 heapsort(20000) 0.452 matrix(20) 0.478 nestedloop(12) 0.671 sieve(30) 0.525 strcat(200000) 0.107 ------------------------ Total 11.484 $ /opt/php526/bin/php Zend/bench.php simple 0.397 simplecall 0.696 simpleucall 1.208 simpleudcall 1.275 mandel 1.420 mandel2 1.601 ackermann(7) 1.643 ary(50000) 0.155 ary2(50000) 0.128 ary3(2000) 1.071 fibo(30) 3.670 hash1(50000) 0.239 hash2(500) 0.244 heapsort(20000) 0.646 matrix(20) 0.822 nestedloop(12) 1.161 sieve(30) 0.593 strcat(200000) 0.120 ------------------------ Total 17.086 namespace добавили, молодцы, имхо самое важно нововведение выход обещали в 3-м квартале, тоесть он уже на носу
Так я и не понял, чем namespace'ы именно в смысле разделения имен переменных отличаются от классов со статическими переменными/методами. Есть у меня подозрения, что все это в итоге одним и тем же кодом обрабатывается: надо посмотреть.
- добавили магический статический метод __callStatic - позднее статическое связывание - тоже полезная фича (наследование статических методов) - константа __DIR__ вместо dirname(__FILE__) - оператор ?: (a ?: $b это эквивалент $a ? $a : $b) - можно делать разные настройки ini для разных директорий, виртуальных хостов - добавили аналог .htaccess фала настроек - нативный драйвер mysqlnd - расширения phpar, intl - сборщик мусора, который разрушает циклические структуры (когда переменная имеет ссылки на себя): PHP: <? $a = array(); $a[0] =& $a; unset($a); echo gc_collect_cycles(); // 1, через время сборщик мусора очистит эту переменную; ?>
На хостингах должно появиться с релизом или чуть позже. Новые версии из ветки 5.x обычно сразу появляются у большинства адекватных хостеров.