ホームページ >バックエンド開発 >PHPチュートリアル >PHP 5.4 について知っておくべきこと_PHP チュートリアル

PHP 5.4 について知っておくべきこと_PHP チュートリアル

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

PHP 5.4 が登場しました。5.3 以来のメジャー バージョン アップグレードです。このアップグレードの変更点はさらに大きく、いくつかの古い機能が削除され、速度が最大 20% 向上し、メモリ使用量が削減されました。

新機能と変更点
このアップデートの主な新機能には、新しい特性、より合理化された配列配列構文、テスト用の組み込み Web サーバー、クロージャで使用できる $this ポインタ、インスタンス化されたクラス メンバー Visit、
PHP が含まれます。 5.4.0 ではパフォーマンスが大幅に向上し、100 を超えるバグが修正され、Register_globals、magic_quotes、セーフ モードが廃止されました。 マルチバイトのサポートがデフォルトで有効になっており、default_charset が ISO-8859-1 から UTF-8 に変更されたことにも言及する価値があります。デフォルトでは、「Content-Type: text/html; charset=utf-8」です。 HTML にメタ タグを記述する必要はなく、UTF-8 との互換性のために追加のヘッダーを送信する必要もありません。

Traits
Traits (水平再利用/多重継承) は、「クラス」のように構造化された (ただしインスタンス化はできない) メソッドのセットであり、開発者が異なるクラスでメソッドを簡単に再利用できるようにします。 PHP は単一継承言語であり、サブクラスは 1 つの親クラスのみを継承できるため、ここで Traits が登場します。
Traits の最良の応用は、複数のクラスが同じ機能を共有できる場合です。たとえば、Web サイトを構築したい場合は、Facebook と Twitter の API を使用する必要があります。以前の場合は、2 つのクラスを作成する必要があります。cURL メソッドを作成し、それを両方のクラスにコピーして貼り付ける必要があります。今はその必要はありません。Traits を使用してコードを再利用します。今回は完全に DRY (Don't Reply Yourself) 原則に従います。

コードをコピーします コードは次のとおりです:

/**cURL ラッパー特性*/
trait cURL
{
public functioncurl($url)
{
$ch =curl_init();
curl_setopt($ch , CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output =curl_exec($ch);
curl_close($ch);
return $output;
}
}
/ **Twitter API クラス*/
class Twitter_API
{
use cURL; // ここでトレイトを使用します
public function get($url)
{
return json_decode($this->curl('http://api.twitter .com/' .$url));
}
}
/**Facebook APIクラス*/
class Facebook_API
{
cURL を使用; // ここで
public function get($url)
{
return json_decode( $this-> ;curl('http://graph.facebook.com/'.$url));
}
}
$facebook = new Facebook_API();
echo $facebook->get('500058753' )-> // ラスムス・レルドルフ
/**PHP 5.4 構文の素晴らしさをデモ中*/
echo (新しい Facebook_API)->get('500058753')->name;
$foo = 'get';
echo (新しい Facebook_API)->$foo('500058753')->name;
echo (新しい Twitter_API)->get('1/users/show.json?screen_name=rasmus')->name;

わかりました いいえ? それでは、より簡単な例を見てみましょう
コードをコピーします コードは次のとおりです:

trait Hello
{
public function hello()
{
return 'Hello' ;
}
}
trait Cichui
{
public function cichui()
{
return ' cichui';
}
}
class HelloCichui
{
use Hello, Cichui;
public function the_end()
{
return ' !';
}
}
$o = 新しい HelloCichui;
echo $o->hello(), $o->cichui(), $o->the_end();
echo (新しい Hello)- >hello(), (新しい Cichui)->cichui(), (新しい HelloCichui)->the_end();

内蔵 Web サーバー
Web 開発では、Apache HTTPD は PHP の最良のパートナーです。開発時には、httpd.conf を設定する必要がある Apache Killer が必要なく、PHP のおかげでコマンド ラインで使用できる超小型の Web サーバーだけが必要になる場合があります (国の事前の感謝)。 )、PHP 5.4 には、今度は Web サーバーの CLI が組み込まれています。 (PHP CLI ウェブサーバーは開発用途のみであり、製品の使用は拒否されます)

例 (Windows プラットフォーム):
ステップ 1: Web ルート ディレクトリ、ルーター、インデックスを作成します
ハードウェアのルート ディレクトリに作成しますディスク (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; // ファイルをそのまま提供します
}
?>
;
新しいindex.phpファイルを作成し、次のコードをコピーして貼り付けます:
//index.php
echo 'Hello cichui.com Readers!';
?>
php.iniファイルを編集し、「include_path」を見つけます。行に、c:public_html を追加します (セミコロンで区切ります):
1include_path = ".;C:phpPEAR;C:public_html"
保存して終了し、次のステップを参照してください

ステップ 2: Web サーバーを実行します
PHP インストール ディレクトリに切り替えて、最も重要なコマンドを入力します — Web サーバーを実行します
php -S 0.0.0.0:8080 -t C:public_html router.php
もう始めましたか? ?プロセスが終了すると、Web サーバーも終了しますので、ウィンドウを閉じないでください。
ブラウザを開きます: http://localhost:8080/index.php にアクセスしてください。
cichui.com 読者の皆さん、こんにちは!
ご覧になりましたか?はい、以上です!
ヒント 1:自分でビルドすることを検討してください。 php-server.batをデスクトップに放り込んでダブルクリックすると処理が開始されます。
ヒント 2: 外部ネットワークが Web サーバーにアクセスしないようにするには、localhost の代わりに 0.0.0.0 を使用します。

簡略化された配列配列構文
PHP 5.4 では、合理化された配列配列構文が提供されます:

コードをコピーします コードは次のとおりです:

$fruits = array('apples', 'oranges', 'バナナ '); // 「古い」方法
// Javascript の配列を学ぶ
$fruits = ['apples', 'oranges', 'bananas'];
// 連想配列
$array = [
'foo' = > ; 'bar',
'bar' => 'foo'
];

もちろん、古い構文はまだ有効であり、もう 1 つのオプションがあります。
配列の逆参照*
配列の処理に一時変数は必要ありません。
Fang Bin Xin のミドルネームを取得する必要があるとします。
echoexplode(‘ ‘, ‘Fang Bin Xin’)[1]; // Bin;

PHP 5.4 より前では、これを行う必要がありました:
$tmp =explode(' ', 'Fang Bin Xin');
echo $tmp[1] // Bin
これからは、次のようにプレイできます:
echo end (explode(' ','Fang Bin Xin')); // 'foo' => ['bar' => 'Hello']];
}echo foobar()['foo'][ 'bar']; // Hello

*磁器ハンマー 注: 配列の逆参照 リテラル変換は配列の逆参照である必要がありますが、これはうまく機能しません。実際、より正確に翻訳すると、「関数の戻り値の配列メンバーのアクセス分析のサポート」になります。詳細については、公式の PHP の説明を参照してください。 匿名関数の $this
これで、クラス インスタンスの $this を通じて匿名関数 (クロージャー関数とも呼ばれます) を参照できます



コードをコピーします

コードは次のとおりです:

class Foo{

function hello() {echo 'Hello Cichui!';
}
function anonymous()
{

return function() {$this->hello(); // のようにプレイすることは不可能でしたこれの前に} ;}}
class Bar
{
function __construct(Foo $o) // Foo クラスのオブジェクト typehint
{
$x = $o->anonymous() // get Foo:: hello()
$x(); // Foo::hello()
}
}
new Bar(new Foo); // こんにちは、Cichui!
実際、以前はそれで間に合いましたが、少し面倒です:
function anonymous()
{
$that = $this; // $that は $this
return function() use ($that) {
$that->hello();
};
}


php.ini に関係なく、short_open_tag を設定する方法、つまり以前のものを置き換えます。


バイナリリテラルをサポートします

8進数(oct)、前に0を追加します; 16進数(hex)、前に0xを追加します
echo 0b11111; // PHP 5.4バイナリがサポートされています
echo 31; // 10 進数
echo 0x1f; // 16 進数
echo 037;

関数の型ヒント
PHP 5.1 以降、型ヒントはオブジェクトと配列をサポートし、PHP 5.4 では呼び出し可能をサポートし始めます。

コードをコピー
コードは次のとおりです:


function my_function(callable $x)
{

return $x();

}function my_callback_function(){return 'Hello Cichui!';}
class Hello{ static function hi(){return 'Hello Cichui!';}}
class Hi{function hello(){return 'Hello Cichui!';}}
echo my_function(function(){return 'Hello Cichui!' ;}) ; // クロージャ関数

echo my_function('my_callback_function'); // コールバック関数 echo my_function(['Hello', 'hi']) // クラス名、静的メソッド echo my_function([(new) Hi) , 'hello']) // クラス名、メソッド名;
高精度タイマー
今回は、マイクロ秒レベルの精度(100万分の1秒、float型)の$_SERVER['REQUEST_TIME_FLOAT']配列変数を導入します。スクリプトの実行時間をカウントするのに非常に役立ちます:
1echo 'Executed in ',round(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'], 2)

概要
つまり、この PHP 5.4 アップグレードは多くの変更が加えられています。 アップグレードする時が来ました。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/328139.html技術記事 PHP 5.4 は、5.3 以来のメジャー バージョン アップグレードです。このアップグレードには大幅な変更があり、いくつかの古い機能が削除され、速度が最大 20% 向上し、メモリ使用量が削減されました...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。