PHP は、Web 開発の分野において常に非常に重要で高速かつ便利な開発言語であり、大多数の開発者に好まれています。現在、PHP 5.4 の正式バージョンがリリースされており、多くの新機能が追加されており、パフォーマンスが 20% 向上し、使用するリソースが削減されていると公式は主張しています。この記事では、PHP 5.4 のいくつかの新機能について説明します。
PHP 5.4 では、まず 100 を超えるバグが修正され、メモリとパフォーマンスの最適化がより適切に行われ、register_globals、magic_quotes、safe_mode など、以前のバージョンのいくつかのメソッドが削除されました。 PHP 5.4 では、デフォルトのエンコード方式が UTF-8 に変更されたことに注意してください。これは、開発者が多言語アプリケーションを開発するのに非常に役立ちます。
Traitsの紹介
まずは、PHP 5.4で追加された新機能であるTraitsを紹介します。実際、この関数は他の言語でも見られ、その構成構造はクラスに似ているため (ただし、クラスのようにインスタンス化することはできません)、開発者はさまざまなメソッドを使用できます。クラス内でこのメソッドのセットを再利用します。 PHP は単一継承言語であるため、1 つのクラスが同時に複数のクラスを継承することはできません。このとき、特性が役に立ちます。
Traits は、実際のクラスに属さないソリューションのコレクションです。ユーザーは Trait インスタンスを作成したり、Traits 内のメソッドを直接呼び出したりすることはできません。代わりに、Trait を実際のクラスにマージして使用する必要があります。優先順位の点では、Trait メソッドは同じ名前の継承されたメソッドをオーバーライドし、現在のマージされたクラス内の同じ名前のメソッドは Trait メソッドをオーバーライドします。
以下は Traits の使用法を説明するための例です。構築している Web サイトが Facebook と Twitter の API を同時に呼び出す必要があるとします。これら 2 つの API の呼び出しプロセス中に、curl メソッドを呼び出して、API から返されるコンテンツを取得する一連の操作を実行する必要があります。これら 2 つのクラスで同じメソッドを繰り返し記述しないようにするには、次のコードに示すように、PHP 5.4 の Traits を使用して実装できます。
パブリック関数curl($url )
{
$ch =curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ ch); curl_close($ ch); return json_decode($this->curl('http://api.twitter.com/'.$url));
}
}
/**cURL ラッパー特性*/
class Facebook_API
{
use cURL; //Call Traits
public function get($url)
{
return json_decode($this->curl('http://graph.facebook.com/'.$url) );
}
}
$facebook = new Facebook_API();
echo $facebook->get('500058753')->name; となります。ユーザー名
/**Twitter API クラス*/
echo (新しい Facebook_API)->get('500058753')->name;
$foo = 'get';
echo (新しい Facebook_API)-> ;$foo('500058753')->name;
echo (new Twitter_API)->get('1/users/show.json?screen_name=rasmus')->name
上記のコードでは、最初にキーワード trait を使用して関数セットが定義されています。その名前は Curl です。このメソッドでは、URL のパラメーター値に基づいて PHP の組み込み cur が呼び出されます。 URL に対応するページ出力コンテンツを返します。そして、Twitter_APIクラスとFacebook_API
クラスでは、cURLを使用してそれぞれTraitsを呼び出し、それぞれのgetメソッドでTraitsのcurlメソッドを呼び出します。
上記のコードでは、new Facebook_API() を使用して Facebook オブジェクトのインスタンスを生成することに加えて、PHP 5.4 の新機能の使用も示していることに注意してください。つまり:
インスタンス化中にクラス メンバーにアクセスできます。つまり:
echo (新しい Facebook_API)->get('500058753')->name;
$foo = 'get';
echo (新しい Facebook_API)->$foo('500058753') -> name;
ご覧になりましたか? $foo 変数に値 get が割り当てられ、クラス内で get メソッドを呼び出そうとすると、(新しい Facebook_API)->$foo が実行されます。 ('500058753')->name ; 呼び出しを実装します。
トレイトの使用法を説明するために、別の例を見てみましょう。この例は、次のコードのように簡単です。
}
Trait Tuts
{
public function tuts()
{
return 'Tuts'
{
use Net, Tuts;
パブリック関数plus()
{
return '+'; }
}
$o = 新しい NetTuts
echo $o->net(), $o->tuts(), $o ->plus();
Echo (new NetTuts)->net(), (new NetTuts)->tuts(), (new NetTuts)->plus();
上記の結果は全てNetTutsに出力されます。また、ちなみに、PHP 5.4 のトレイトの魔法定数は __TRAIT__ です。
内蔵デバッグサーバー
これまでのPHP開発では、通常、Apache HTTP Serverと連携して開発する必要がありました。 PHP 5.4 には、開発者が複雑な構成を行わずに開発作業を完了できるよう、シンプルな Web サーバーが組み込まれています。以下では、PHP 5.4 の組み込みサーバーを使用して Windows 環境で関連作業を完了する方法を段階的に説明します。
ステップ1) まず、cドライブのルートディレクトリにディレクトリ(public_html)を作成し、そのファイル内にrouter.phpファイルを作成します。 コードは次のとおりです:
// router. php
if (preg_match( '#.php$#', $_SERVER['REQUEST_URI']))
{
require basename($_SERVER['REQUEST_URI']) // php ファイルを提供します
}
else if (strpos ($_SERVER['REQUEST_URI '], '.') !== false)
{
return false; // ファイルをそのまま提供します
}
?> 次に、 という名前の単純な PHP ファイルを作成します。次のように、index.php :
//index.php
echo 'Hello Nettuts+ Readers!';
?> 次に、php 5.4 のインストールディレクトリを開き、php.ini を見つけて次の行を追加します。 include_path:
include_path = ".;C:phpPEAR;C:public_html"
ステップ 2 組み込み Web サーバーを実行します
まずコマンドラインモードに入り、php ディレクトリに入り、次のコマンドを入力します:
php -S 0.0 .0.0:8080 -t C:public_html router.php
どのマシンでもこのサーバーにアクセスできることを指定し、ポート8080を指定し、作業監視用のルーティングファイルがルーターとphpファイルであることを指定します上記のコマンド ラインを入力して Enter キーを押すと、次のメッセージ
が表示され、組み込みサーバーが正しく起動されたことがわかります。
この時点で、ブラウザに http://localhost:8080/index.php と入力してアクセスできます。
より簡潔な配列構文
PHP 5.4 では、配列での宣言などの一部の構文サポートがより簡潔になり、
次のように宣言するための括弧の使用がサポートされます。
$fruits = array ('apples', 'oranges', 'bananas'); // 古い宣言メソッド
$fruits = ['apples', 'oranges', 'bananas'] // 新しい宣言メソッドは PHP 5.4 でサポートされます
// 新しい連想配列アクセス
$array = [
'foo' => 'bar',
'bar' => 'foo'
]; 5.4では、古い配列宣言方法もサポートされています。
関数の戻り値から配列値に直接アクセス
PHP 5.4では、関数の戻り値から配列値に直接アクセスすることがサポートされています。たとえば、次のようにします。
$tmp =explode(' ', 'Alan Mathison Turing');
echo $tmp[1]; // Mathison
この例では、PHP 5.4 より前であれば、上記の文字列の Mathison の場合、最初にexplode関数を使用して関連する値を返し、次に配列の値を取得する必要があります。 PHP 5.4 では、次のように戻り値に配列として直接アクセスできます:
echoexplode(' ', 'Alan Mathison Turing')[1]; こちらの方がずっと便利です。別の例として、上記の文字列の最後の文字列部分である Turing を追加するには、PHP 5.4 で次のようにすることができます:
echo end(explode(' ', 'Alan Mathison Turing')); 次に、次の複雑な例を示します。ポイントは以下の通りです
function foobar()
return ['foo' => ['bar' => 'Hello']]
echo foobar()['foo']['bar']; //出力 Hello
$this ポインタはクロージャで使用できます
以前の PHP バージョンでは、匿名メソッド (クロージャとも呼ばれます) で $this ポインタを使用できませんでしたが、PHP 5.4 では使用可能になりました。例は次のとおりです。
class Foo
{
function hello() {
echo 'Hello Nettuts!' }
function anonymous()
{
() {
$ this->hello(); //以前のバージョンでは不可能でした
}
}
class Bar
{
function __construct(Foo $o)
{
$x = $o->anonymous(); // 実際にFoo::hello()を呼ぶ
$x(); // 実行されるのはFoo::hello()
}
}
new Bar( new Foo); //出力 Hello Nettuts!
上記の実装方法は、PHP 5.4 では、次のように簡単に記述できます。 ; php.iniのshort_tagに関係なく、function($ that);マークの付け方 設定は、いつでもテンプレート内でこの方法の代わりに使用できます。 2 進数を識別するには「0b」接頭辞を使用します。 さて、2 進数を使用したい場合は、次のように先頭に 0b 接頭辞を追加してください。
Echo 0b11111
関数型ヒントの強化
PHP は弱いので。 PHP 5.0 以降、関数の型ヒント関数が導入されました。これは、受信関数のすべてのパラメーターが型チェックされることを意味します。たとえば、次のクラスがあります。
class bar {
}
function foo ( bar $foo) {
}
関数 foo のパラメータは、渡されるパラメータが bar クラスのインスタンスでなければならないと規定しています。そうしないと、システムが判断エラーを起こします。配列についても同様に、次のような判断もできます。
function foo(array $foo) {
}
foo(array(1, 2, 3)); // 配列が渡されるので正解です。
foo(123); // 不正解、渡されたのは配列ではありません
PHP 5.4 では、呼び出し可能な型のサポートがサポートされています。以前は、関数がパラメータとしてコールバック関数を受け入れるようにしたい場合、それが呼び出し可能な正しいコールバック関数であるかどうかを確認するために多くの追加作業を行う必要がありました。例は次のとおりです:
関数。 foo(callable $callback) {
}
ルール:
foo("false") // false は呼び出し可能な型ではないのでエラー
foo("printf") // 正しい
foo; (function(){}); //正しい
class A {
static function show() {
}
}
foo(array("A", "show")) //正しい
残念ながら、PHP 5.4では、文字、整数などの基本型の型ヒントはまだサポートされていません。
時間統計の強化
PHP 5.4 では、サービスリクエスト時間をカウントするために使用され、ミリ秒で表現される $_SERVER['REQUEST_TIME_FLOAT'] が新たに追加され、次のような開発者が非常に容易になります:
echo 'script実行時間',round(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'], 2), 's';
概要:
この記事では、PHP 5.4 のいくつかの新機能を簡単にまとめています。 PHP 5.4 の明らかな機能改善は、主にトレイトと組み込みデバッグ サーバー、UTF-8 のデフォルト サポートなどです。新機能の詳細については、PHP 5.4 のユーザー マニュアルを参照してください。