目次
外部ressources
結論
HHVMは従来のPHPとどのように異なりますか?
ハッキングプログラミング言語は何ですか?
HHVMはパフォーマンスをどのように改善しますか? -time(jit)コンピレーションアプローチ。これは、実行時にPHPコードを解釈する代わりに、HHVMがコードを高レベルのバイトコードにコンパイルし、その後マシンコードに変換されることを意味します。このプロセスにより、実行と効率の向上が可能になります。
いいえ、ハックはHIPHOP仮想マシン(HHVM)専用に設計されたプログラミング言語です。したがって、ハックを使用するには、hHVMをインストールする必要があります。
HHVMとハックの使用を開始するにはどうすればよいですか?
ホームページ バックエンド開発 PHPチュートリアル HHVMのPHP交換であるハックを見てください

HHVMのPHP交換であるハックを見てください

Feb 22, 2025 am 08:29 AM

A Look at Hack, the PHP Replacement in HHVM

HHVMのPHP交換であるハックを見てください

以前に作成したVagrantボックスを使用して、この記事からコードスニペットを実行できます。

キーテイクアウト

HHVMのPHP置換である
    ハックは、静的に型付けられた言語です。つまり、アプリケーション内のすべての変数にタイプを提供する必要があります。ただし、Hackは「Strict」モードでのみタイプが予想される「段階的なタイピング」システムを使用します。それでも、Hackはローカル変数タイプを推測するのに十分スマートです。
  • Hackは、Facebookの注釈の実装であるユーザー属性を含むPHPを改善するいくつかの機能を導入します。XHPは、XMLドキュメントフラグメントが有効なPHP式になるように言語の構文を増強するPHP拡張です。
  • ハックとHHVMの利点にもかかわらず、PECL拡張のサポートの欠如やHHVMがFacebookのみに支えられているという事実など、採用にはまだ障害があります。ただし、FacebookにはHHVMターゲットのPHP拡張機能を自動的にコンパイルできるツールがあり、HHVMの拡張機能を開発することは、PHPの開発よりも簡単です。
  • なぜタイプ?
  • 記事の最初の部分では、ハックが実際に静的にタイプされていることがわかりました。これは、アプリケーション内のすべての変数にタイプを提供する必要があることを意味します。リマインダーとして、PHPは動的にタイプされているため、機能引数にタイプヒントを使用できますが、変数を入力する必要はありません。
しかし、それはあなたがあなたのアプリケーションのすべての変数にタイプを提供しなければならないことを意味しますか?正確ではありません、そして私たちは詳細を見るつもりです。

Facebookのコードベースは、数億回のコードで構成されており、ハッキングに切り替える前にどこにでもタイプを追加することは本当の負担でした。したがって、「段階的なタイピング」が付属しています。ハックは、「厳格な」モードのみでタイプを期待しています。非ストリクトモードでは、それらが存在する場合にのみ考慮されます。

Strictモードの入力は、厳密なモードであっても、すべての変数に注釈を付ける必要はありません。これは、ハックがローカル変数タイプを推測するのに十分スマートであるためです。タイプの注釈は、クラスのプロパティ、関数引数、および戻り値にのみ必要です。そうでなければ、あなたのコードの理解に役立つ可能性がある場合は、ローカル変数に注釈を付けることをお勧めします。 例を見てみましょう:

このセクションのサンプルコードはwww/type-checker/index.phpにあり、ブラウザをhttp:// localhost:8080/type-checker/。

>>。

最初のエラーメッセージは驚くことではありません:add(1、 "a")を呼び出して、add()が整数であると予想されるため、エラーが生成されます。

2番目のエラーメッセージはより予想外です。Add_Array([1、 "a"])を呼び出すことでエラーは生成されません。実際には、エラーを生成するAdd_array()の内側に(1、 "a")を追加する呼び出しです! [1、 "a"]がエラーがトリガーされると予想できたはずです。

問題は、HHVMランタイムチェックがパフォーマンスに影響を与えないためにまばらであるということです。オブジェクトを繰り返しません。この時点で、おそらくハックタイプシステムの有用性に疑問を呈するでしょう!しかし、心配しないでください、簡単な答え、「タイプチェッカー」:前の例のものを含む任意のタイプの不一致をキャッチします。 HHVMリポジトリで探してはいけませんが、Facebookからまだリリースされていません。

タイプチェッカーは、変更のためにファイルを監視するサーバーとして実装されます。変更を検出するたびに、変更されたファイルをスキャンしてエラーの依存関係をスキャンします。エラーはリアルタイムで報告されるため、コードを実行する必要さえありません。 FBのスケールでも非常に速く動作するように設計されています。

今、あなたはタイプシステムがうまく機能することを確信すべきですが、利点は何ですか?開発者エラーをリアルタイムでキャッチし、より効率的なコードを作成することができます。PHPADD()関数は、最初に$ Aと$ B(つまり、文字列、null、…)のタイプをチェックする必要があります。追加を実行します。一方、上記のadd()関数は、アセンブリ言語で非常に高速な動作である2つの非ヌル整数を追加します(HHVM JITによって生成されます)。

開発者として、すでにPHPタイプのヒントとPHPDOCアノテーションを使用している場合、厳密なモードに切り替えることは簡単です。コードはより安全かつ高速になります。スクーチナイザーのような既存のQAツールの一部は、リアルタイムではありませんが、コードをチェックするためにタイプの推論をすでに使用していることに注意してください。

動的に型付けされた性質のためにPHPを主に使用する場合、おそらく非強制モードに固執したいと思うでしょう。

ユーザー属性

過去数年間、注釈の使用はPHPの世界で劇的に増加しました。注釈に精通していない人にとっては、クラス、インターフェイス、特性、変数、機能/方法に追加できるメタデータです。

教義ORMは、おそらく注釈を広範囲に使用した最初のPHPプロジェクトの1つです。以下は、教義のドキュメントからのモデル構成の例です。

PHPは、他の多くの言語とは異なり、注釈のサポートが組み込まれていません。ただし、Doctrine Annotation Libraryは、Docblocksからメタデータを抽出するために広く使用されています。 PHPでの注釈のための組み込みサポートを提案するRFCは、2011年に拒否されました。

ユーザー属性は、AnnotationsのFacebook実装です。それらは>に囲まれており、それらの構文は教義の注釈とは少し異なります:

<span><span><?hh // strict
</span></span><span>
</span><span><span>require "/vagrant/www/xhp/php-lib/init.php";
</span></span><span>
</span><span><span>// ...
</span></span><span>
</span><span><span>function add(int $a, int $b): int {
</span></span><span>    <span>return $a + $b;
</span></span><span><span>}
</span></span><span>
</span><span><span>// ERROR(calling "add()" on l.17) : Argument 2 passed to add() must be an
</span></span><span><span>// instance of int, string given
</span></span><span><span>echo <p>add(1, "a") = {add(1, "a")}</p>;
</span></span><span>
</span><span><span>// ERROR(calling "add()" on l.22) : Argument 2 passed to add() must be an
</span></span><span><span>// instance of int, string given
</span></span><span><span>function add_array(array<int> $a): int {
</span></span><span>    <span>return array_reduce($a, "add", 0);
</span></span><span><span>}
</span></span><span>
</span><span><span>echo <p>add_array([1, "a"]) = {add_array([1, "a"])}</p>;</span></span>
ログイン後にコピー

ユーザー属性は、当然のことながら、反射APIからアクセスされることに注意する必要があります。また、クラスのプロパティに注釈を付けるためのサポートはまだ実装されていることに注意してください。 このセクションのサンプルコードはwww/attributes/index.phpにあり、ブラウザをhttp:// localhost:8080/attributes/。

に向けて出力を見ることができます。

xhp

この記事の最初のコード例から使用しているように、今ではXHPが何であるかの前兆があるはずです。 Facebookを引用して、より完全な定義については、「XHPは、XMLドキュメントフラグメントが有効なPHP式になるように言語の構文を補強するPHP拡張機能です。」。 XHPはPHP拡張機能として利用可能であり、HHVMにはネイティブサポートがあることに注意してください。 {$ hello} を使用できます。前の例は些細なものですが、XHPにはもっと提供されています:

マークアップを検証して、無効なHTMLを記述できないようにします - 閉鎖タグを欠いている、パラメーター名のタイプミスを見逃していると考えてください。

ある程度のコンテキストエスケープを提供します。エンジンがあなたのレンダリングを認識しているため、XSS攻撃を防ぐためにHTMLと属性値を適切に逃れることができます。

既存のタグを拡張またはラップすることで、独自のタグを作成できます。

    例を見てみましょう:
  • このセクションの完全なサンプルコードはwww/hhxhp/index.phpにあり、ブラウザをhttp:// localhost:8080/hhxhp/。
  • > この例では、タグをレンダリングするカスタムタグを定義することから始めます。これは、クラス:tuto:examplesを宣言することによって行われます。私たちのカスタムタグには、例と現在の2つの属性が必要ですが、子供を持つことは許可されていません(子供は空です;)。
  • ベースを拡張しているので、x:要素、render()メソッドをオーバーライドして、カスタムマークアップをXHPとして返す必要があります。
  • Facebookは、XHP言語をUIライブラリの基礎として使用しており、最終的にはオープンソースになります。 非同期コード実行
HHVMリポジトリでいくつかのテストを見た後、非同期コードの実行に関するセクションを書く予定がありました。しかし、私は実用的な例を持っていませんでした。これは、トピックを少し理解していないことや、Facebookが関連するすべてのコードをまだリリースしていないという事実によるものかもしれません。 Facebookがいくつかのドキュメントをリリースしたら、これについて書くかもしれません。

その他の機能

<span><span><?php
</span></span><span><span>/** @Entity */
</span></span><span><span>class Message
</span></span><span><span>{
</span></span><span>    <span>/** @Column(type="integer") */
</span></span><span>    <span>private $id;
</span></span><span>    <span>/** @Column(length=140) */
</span></span><span>    <span>private $text;
</span></span><span>    <span>/** @Column(type="datetime", name="posted_at") */
</span></span><span>    <span>private $postedAt;
</span></span><span><span>}</span></span>
ログイン後にコピー
この記事でカバーされていないHHVMエコシステムについては、何を含めるかを選択しなければならなかったため、Facebookはまだすべてのコードとドキュメントをリリースしていないためです。

言及する価値があるいくつかのことは、FastCGIと統合デバッガーの最近のサポートです。

Facebookは、自動完了、構文の強調表示、共同編集などを特徴とするWebベースのIDEである「FBIDE」も紹介しています。後で利用できると予想されます。

外部ressources

この記事を準備するために使用したFacebookチームのいくつかの講演やスライドで詳細情報を見つけることができます。キース・アダムスからの「PHPを真剣に受け止める」講演を聞いて、ジュリアン・ヴェルラゲットからの別の素晴らしい講演を聞いて、ハックのことを初めて聞きました。 Sara Golemonの素敵なスライドも私には本当に役に立ちました。

結論

Facebookは、HHVMのPHPで機能パリティを提供することを約束しています。昨年末までに、HHVMは、最も人気のある20のPHPフレームワークの単体テストの98.5%をすでに合格することができました。それ以来、状況はわずかに改善されています

今日の時点で、HHVMは、より少ないメモリを消費しながら、PHPよりも速くPHPコードを実行します。これは、パリティが最終的に達成されたときに、HHVMを支持する上で大きな利点になります。それに加えて、タイプチェッカーの助けを借りてさらにパフォーマンスを獲得し、コードの安全性を向上させるためにハックの導入を開始できます。漸進的なタイピングとハックの事実のおかげで、コードベース全体を一度に変換する必要がないことを忘れないでくださいPHPは相互運用可能です。

今から数か月後、Facebookからより多くのドキュメントとツールが期待できます。 Githubでプロジェクトに貢献することで支援することもできます。

PHPコミュニティが報告した問題の1つは、おそらく採用の大きな障害であることです。PECL拡張のサポートがないことです。これを緩和するために、FacebookにはHHVMターゲットのPHP拡張機能を自動的にコンパイルできるツールがあります。ただし、成功率は100%からはほど遠いものです。ここで役立つもう1つのことは、HHVMの拡張機能を開発することは、PHPの開発よりもはるかに簡単であるということです。

HHVMがFacebookだけで裏付けられているという事実と、HHVMに貢献する前にCLAに署名する必要性は、他の人に厄介に思えます。

私は個人的に、かなりの量の競争がPHPの将来にとって素晴らしいことだと思います。

結論として、Facebookチームが彼らが行った素晴らしい仕事に感謝し、それをオープンソースにしたいと思います。将来のHHVMとハックに関するSitePointの記事をもっと見たい場合は、以下にコメントを追加することでトピックを提案することをheしないでください。 ハックPHP交換HHVM

に関するよくある質問(FAQ)

HACK PHP交換HHVMとは何ですか?

HACK PHP置換HHVMは、HIPHOP仮想マシンとしても知られており、ハックとPHPで書かれたプログラムを実行するために設計されたオープンソース仮想マシンです。 HHVMは、PHPが提供する開発の柔軟性を維持しながら、ジャストインタイム(JIT)コンピレーションアプローチを使用して優れたパフォーマンスを実現します。

HHVMは従来のPHPとどのように異なりますか?

HHVMは、その実行において従来のPHPとは異なります。 PHPは実行時にコードを解釈しますが、HHVMはPHPまたはハックコードを高レベルのバイトコードにコンパイルし、その後マシンコードに変換されます。このプロセスにより、パフォーマンスと効率が向上することができます。

ハッキングプログラミング言語は何ですか?

ハックは、Facebookが発明したHIPHOP仮想マシン(HHVM)のプログラミング言語です。これはPHPの方言であり、静的タイピング、タイプアノテーション、ジェネリックなどの新機能が含まれています。これらは従来のPHPでは利用できません。 PHPを改善するいくつかの機能。潜在的なランタイムエラーを防ぐことができる静的タイピングが含まれています。また、非同期プログラミングをサポートし、I/O操作のより効率的な取り扱いを可能にします。さらに、ハックには、高性能で強力なデータ構造であるコレクションが含まれています。 JITコンピレーションプロセスの性質により、いくつかの違いがあります。ただし、HHVMは「HHVM-Autoload」と呼ばれるツールを提供します。これは、既存のPHPコードをHHVMに移行するのに役立ちます。

HHVMはパフォーマンスをどのように改善しますか? -time(jit)コンピレーションアプローチ。これは、実行時にPHPコードを解釈する代わりに、HHVMがコードを高レベルのバイトコードにコンパイルし、その後マシンコードに変換されることを意味します。このプロセスにより、実行と効率の向上が可能になります。

HHVMなしでハッキングを使用できますか?

いいえ、ハックはHIPHOP仮想マシン(HHVM)専用に設計されたプログラミング言語です。したがって、ハックを使用するには、hHVMをインストールする必要があります。

ハックは静的に型付けの言語ですか?これは、変数のタイプがコンパイル時にチェックされ、潜在的なランタイムエラーを防ぐのに役立つことを意味します。 、静的タイピング、非同期プログラミング、コレクションを含む。これらの機能は、コードの安全性、効率、パフォーマンスを改善するのに役立ちます。

HHVMとハックの使用を開始するにはどうすればよいですか?

HHVMとハックの使用を開始するには、システムにHHVMをインストールする必要があります。インストールしたら、HHVMランタイムを使用してコードをハッキングして実行できます。また、いくつかのリソースとチュートリアルもオンラインで入手できます。

以上がHHVMのPHP交換であるハックを見てくださいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

See all articles