新しい抽象構文ツリー (AST) によって PHP7 に加えられた変更

この記事の内容の大部分は、AST の RFC ドキュメントに基づいています: https://wiki.php.net/rfc/abstract_syntax_tree , 理解を容易にするために、ソース文書からの抜粋が紹介されています。
この記事では、抽象構文ツリーが何であるかについては説明しません。これは自分で理解する必要があります。この記事では、AST が PHP にもたらすいくつかの変更についてのみ説明します。
新しい実行プロセス
PHP7 のコアにおける重要な変更は、AST の追加です。 PHP5 では、PHP スクリプトからオペコードまでの実行プロセスは次のとおりです:
1. 字句解析: 字句スキャン分析、ソース ファイルをトークン ストリームに変換します;
2. 解析: 構文分析、Op 配列はこの段階で生成されます。
3. PHP7 では、op 配列は構文分析段階で直接生成されなくなりましたが、AST が最初に生成されるため、プロセスにはもう 1 つのステップがあります:
4. 字句解析:字句スキャン分析、ソース ファイルをトークン ストリームに変換;
5. 解析: 構文分析、トークン ストリームから抽象構文ツリーを生成;
6. コンパイル: 抽象から op 配列を生成構文ツリー。
実行時間とメモリ消費量
上記の手順から、これは前のプロセスよりも 1 つの手順が多いため、常識的には、これによりプログラムの実行時間が増加します。時間とメモリの使用量。しかし実際には、メモリ使用量は確かに増加していますが、実行時間は減少しています。
次の結果は、小規模 (約 100 行のコード)、中規模 (約 700 行)、および大規模 (約 2800 行) の 3 つのスクリプトをテストして得られます。テスト スクリプト: https ://gist.github.com/nikic/289b0c7538b46c2220bc
各ファイルを 100 回コンパイルする実行時間 (記事のテスト結果時間は 14 年であることに注意してください、PHP7 とも呼ばれます) PHP-NG ):
|
##php-ng |
php-ast | diff | |
|---|---|---|---|
| 0.160s | -12.5% | MEDIUM | |
| 1.268s | -17.7% | LARGE | |
| 5.736s | -16.9% |
|
php-ast |
diff | ##SMALL | |
|---|---|---|---|
| 9.5% | ##MEDIUM | 507kB | |
| 26.8% | 大 | 1084kB | |
| 71.3% | 単一コンパイルのテスト結果は、実際の使用状況を表していない可能性があります。以下は、PhpParser を使用した完全なプロジェクト テストの結果です: |
| diff |
時間 | 25.5ms | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ##メモリ | 2360kB | 2482kB | |||||||||||||
| ## |
| 式 | PHP5 | PHP7 |
|---|---|---|
$foo['bar']['baz'] |
#$ {$foo['bar']['baz']}
|
($$foo)['bar']['baz'] |
$foo->$bar['baz']
| ##$foo->{$bar['baz']}
#($foo->$bar)['baz'] |
| ##$foo->$ bar['baz' ]()
$foo->{$bar['baz']}() |
#($ foo->$bar )['baz']() |
##Foo::$bar['baz']() |
Foo ::{$bar['baz']}()
|
(Foo::$bar)['baz']()
|
全体的に、以前の順序は右から左でしたが、現在は左から右です。また、括弧は動作に影響を与えないという原則に従います。このような複雑な変数の書き方は、実際の開発では注意が必要です。 |
以上が新しい抽象構文ツリー (AST) によって PHP7 に加えられた変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
ホットAIツール
Undress AI Tool
脱衣画像を無料で
Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ
AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。
Clothoff.io
AI衣類リムーバー
Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。
人気の記事
ホットツール
メモ帳++7.3.1
使いやすく無料のコードエディター
SublimeText3 中国語版
中国語版、とても使いやすい
ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
ドリームウィーバー CS6
ビジュアル Web 開発ツール
SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
ホットトピック
8649
17
1792
16
1733
56
1583
29
1455
31
PHPセットアップの簡単なガイド
Jul 18, 2025 am 04:25 AM
PHPを設定するための鍵は、インストールメソッドを明確にし、PHP.iniを構成し、Webサーバーに接続し、必要な拡張機能を有効にすることです。 1. PHPのインストール:LinuxにAPTを使用し、Mac用のHomeBrew、およびWindowsに推奨されるXAMPPを使用します。 2。PHP.iniの構成:エラーレポート、制限のアップロードなどを調整し、サーバーを再起動します。 3。Webサーバーの使用:Apacheはmod_phpを使用し、nginxはphp-fpmを使用します。 4.完全な機能をサポートするために、Mysqli、JSON、MbStringなど、一般的に使用される拡張機能:MySqli、JSON、Mbstringなどをインストールします。
PHPでコードをコメントします
Jul 18, 2025 am 04:57 AM
PHPコメントコードには3つの一般的な方法があります。1。//#を使用して1行のコードをブロックすると、//を使用することをお勧めします。 2。使用/.../複数の行でコードブロックをラップするには、ネストすることはできませんが交差することができます。 3. / if(){}を使用するなどの組み合わせスキルコメントロジックブロックを制御するか、エディターショートカットキーで効率を改善するには、シンボルを閉じることに注意を払い、使用時にネストを避ける必要があります。
PHPコメントを書くためのヒント
Jul 18, 2025 am 04:51 AM
PHPコメントを書くための鍵は、目的と仕様を明確にすることです。コメントは、「何が行われたのか」ではなく「なぜ」を説明する必要があり、冗長性や単純さを避けてください。 1.読みやすさとツールの互換性を向上させるために、クラスおよびメソッドの説明にdocblock(/*/)などの統合形式を使用します。 2。JSジャンプを手動で出力する必要がある理由など、ロジックの背後にある理由を強調します。 3.複雑なコードの前に概要説明を追加し、手順でプロセスを説明し、全体的なアイデアを理解するのに役立ちます。 4. TodoとFixmeを合理的に使用して、To Doアイテムと問題をマークして、その後の追跡とコラボレーションを促進します。優れた注釈は、通信コストを削減し、コードメンテナンスの効率を向上させることができます。
コメントで読みやすさを向上させます
Jul 18, 2025 am 04:46 AM
良いコメントを書くための鍵は、コードの読みやすさを改善するために「何が行われたか」ではなく「なぜ」を説明することです。 1。コメントは、価値の選択や処理の背後にある考慮事項など、論理的な理由を説明する必要があります。 2。複雑なロジックに段落注釈を使用して、関数またはアルゴリズムの全体的な考え方を要約します。 3.コードとの一貫性を確保し、誤解を招くことを避け、必要に応じて時代遅れのコンテンツを削除するために、コメントを定期的に維持します。 4.コードをレビューする際にコメントを同期して確認し、コードコメントの負担を軽減するためにドキュメントを介してパブリックロジックを記録します。
PHPの学習:初心者向けガイド
Jul 18, 2025 am 04:54 AM
tolearnphpefctivially、startbysettingupalocalserverenvironmentusingtoolslikexamppandacodeeditorlikevscode.1)instalxamppforapa Che、mysql、andphp.2)useocodeeditorforsyntaxsupport.3)testyoursetup withasimplephpfile.next、Learnpbasicsincludingvariables、ech
効果的なPHPコメントを書く
Jul 18, 2025 am 04:44 AM
コメントは、古いインターフェイスとの互換性やサードパーティの制限など、機能ではなくコードの存在の理由を説明したいため、不注意にすることはできません。コメントしなければならない領域には、複雑な条件付き判断、特別なエラー処理ロジック、一時的なバイパス制限が含まれます。コメントを書くためのより実用的な方法は、シーンに基づいてシングルラインのコメントを選択したり、コメントをブロックすることです。ドキュメントブロックコメントを使用して、関数、クラス、ファイルの開始時にパラメーターと返品値を説明し、コメントを更新します。複雑なロジックについては、前のロジックにラインを追加して、全体的な意図を要約できます。同時に、コードを封印するためにコメントを使用しないでください。バージョン制御ツールを使用します。
クイックPHPインストールチュートリアル
Jul 18, 2025 am 04:52 AM
to installphpquickly、usexampponwindowsorhomebrewonmacos.1.onwindows、downloadandinstallxampp、selectcomponents、startapache、andplacefilesinhtdocs.2
PHPブロックコメントのマスター
Jul 18, 2025 am 04:35 AM
phpblockcommentsEursefurwritingmulti-lineexplanations、一時的にdisabledingcode、およびgeneratingdocumentation.theyshouldnotedorleftunclosed.blockcommentshelpindocumentingのfunctionswithphpdoc、whitooklikephpstormuseuto-compling-compling-compling comprivedoc


