PHP 5.3:概要

日が経つにつれて天気は良くなりますが、PHP 5.3はどんどん近づいてきます。完全に武装する必要があります。
RC2、RC3、Stable(約1か月後)が最近登場しました。

最初に言いたいのは、5.2は5.1より遅いですが、5.3は5.1より速いことです。 5.3では、多くの最適化(リンクテーブルを含む)が導入されました。これは朗報です。

新しい予約語やその他のマイナーなポイントの導入を除いて、下位互換性の特別な問題はありません。
詳細については、こちらをご覧ください-wiki.php.net/doc/scratchpad/upgrade/53

さらに、多くの革新があります:

1. mysqlnd。
ご存知のように、PHPはlibmysqlを介してCラッパーを介してMySQLサーバーと通信しますが、実装には大きなオーバーヘッドがあります(たとえば、mysql_fetch_assocを実行すると、メモリに3つものコピーがあります)。
MySQL Native Driverは、libmysqlの効果的なCレベルの代替です。 ただし、インターフェース(mysql、mysqli、PDO)がこのような影響を受けることはありません。

2.閉鎖。
トイレの縁の下にcreate_function()が表示されるのにうんざりしていませんか?
$lambda = function() {echo 'Hello World!';};
$lambda();


* This source code was highlighted with Source Code Highlighter.

:
class myLambda
{
  public function __invoke() {echo 'Hello World!';}
}
$lambda = new myLambda;
$lambda();


* This source code was highlighted with Source Code Highlighter.
, , :
$var = 'Hello World!';
$func = function() use ($var) {echo $var;};
$func();


* This source code was highlighted with Source Code Highlighter.
preg_replace_callback, .

$this . , .
, , use, .

wiki.php.net/rfc/closures

3. namespaces. .
namespace hello;
class msg
{
 public static function write() {echo 'Hello';}
}
msg::write();
namespace World;
class msg
{
 public static function write() {echo ' World!';}
}
msg::write();


* This source code was highlighted with Source Code Highlighter.
. namespace' , , . .
namespace' — (\).

php.net/namespaces

4. .
true-, .
$var = 'Hello World!';
echo $var?:'false';
// Hello World!


* This source code was highlighted with Source Code Highlighter.
, .

5. Label'. GOTO.
Label' , , Label'.
$i = 1;
start:
echo ($i > 1?'-':'').$i;
if ($i++ < 5) {goto start;}
echo ' ';
// 1-2-3-4-5


* This source code was highlighted with Source Code Highlighter.
.
, :)

6. Garbage Collector.
- PHP , .

7. SPL.

-: http://www.php.net/~helly/php/ext/spl/

, : SplFixedArray, SplStack, SplDoublyLinkedList, SplQueue, SplPriorityQueue. .

, Spl phpinfo() :
$ php -i|less
$ php -r 'var_export(spl_classes());'
$ php --re spl|less

crocodile2u.
Sherman81 .

8. Late Static Binding
__callStatic get_called_class().
.

PCRE 7.9 ( ), sqlite , .

- , , .
!

Source: https://habr.com/ru/post/J59876/


All Articles