ホームページ  >  記事  >  バックエンド開発  >  PHP5.3言語機能_PHPチュートリアル

PHP5.3言語機能_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:52:551138ブラウズ

パフォーマンスの向上

PHP 5.3 の全体的なパフォーマンスが 5 ~ 15% 向上しました

md5() が 10 ~ 15% 高速化されました
エンジン内のスタック実装が改善されました
定数が読み取り専用メモリに移動されました
例外処理プロセス改善 (簡素化され、オペコードが減りました)
(require/include)_once 改善、重複したオープンを削除
gcc4 によるバイナリ サイズと起動サイズの縮小

新しい言語機能

__DIR__

5.3 より前では、現在のスクリプトでは、一度実行する必要があります 関数呼び出し

CODE:
echo dirname(__FILE__) // < PHP 5.3

5.3 では、マジック定数 __DIR__ のみが必要です。

CODE:
echo __DIR__; // >= PHP 5.3

?:operator

2 つの値/式から null 以外の値をすばやく取得できる便利な ?:operator。

CODE:
$a = true ?: false; // true
$a = "" ?: 1; // 1
$a = 0 ?: 2; // 2
$a = array() ?: array(1); // array(1);
$a = strlen("") ?: strlen("a"); // 1

__callStatic();

新しいマジックメソッド __callStatic が追加されました。その機能は __call に似ていますが、静的メソッドに対してのみ有効です。

コード:

クラスヘルパー {
static function __callStatic($name, $args) {
echo $name.'('.implode(',', $args).')';
}
}
helper: :test("foo","bar"); // test(foo,bar)

静的メソッドを動的に呼び出す

静的メソッドを動的に呼び出す?動と静の組み合わせ。

CODE:

class helper {
static function foo() { echo __METHOD__; }
}
$a = "helper";
$b = "foo";
$a::$b(); ::foo

Late Static Binding

どう訳していいか分からないので、原文のままにした方が分かりやすいかもしれません。静的メソッドのイベント処理タイミングが以前はコンパイル時に処理されていましたが、実行時に処理されるようになりました。

PHP 5.3 より前では、次のコードは A を出力しますが、これは私たちが望むものではありません。whoami メソッドはクラス B で再定義されています。私たちが当然と思っているものに準拠するために B を出力する必要があります。

コード:

class A {
public static function whoami() {
echo __CLASS__;
}
public static functionidentity() {
self::whoami();
}
}
class B extends A {
public static function whoami() {
echo __CLASS__;
}
}
B::identity(); // A

static::whoami() は、static を呼び出すために次のコードで使用されます。メソッド 。 PHP 5.3 以降では、実行中に __CLASS__ が処理されるため、この例ではクラス B を正常にキャッチできます。

コード:

class A {
public static function whoami() {
echo __CLASS__;
}
public static functionidentity() {
static::whoami();
}
}
class B extends A {
public static function whoami() {
echo __CLASS__;
}
}
B::identity(); // B = PHP 5.3

mysqlnd

mysqlnd は php 5.3 のデフォルトの mysql ドライバーになります。これには次の利点があります:

mysqlnd はコンパイルが簡単です: PHP ソース コード ツリーの不可欠な部分であるため

mysqlnd は PHP の内部メカニズムとより密接に統合され、最適化された mysql ドライバーです
mysqlnd はより多くのメモリを節約しますテスト結果から、従来の mysql 拡張機能はメモリの 40% を節約します
mysqlnd は高速です
mysqlnd は豊富なパフォーマンス統計関数を提供します
mysqlnd は不要な著作権紛争を回避するために PHP ライセンスを使用します

この変更は両方に有効ですmysql および pdo_mysql 拡張機能。

mysqlndとは

mysqlndはmysqlのオリジナルのphpドライバーです

しかし、PDO_MySQLはまだmysqlndをサポートしておらず、現在mysql(i)拡張機能のみが使用可能です

http://www.bkjia.com/PHPjc/371455.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/371455.html技術記事パフォーマンスの向上 PHP 5.3 の全体的なパフォーマンスが 5 ~ 15% 向上しました。エンジンのスタック実装が改善され、例外処理プロセスが改善されました。 (簡略化して...
)
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。