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 , .



- , , .

!



All Articles