| XHP | |
|---|---|
| 原作者 | マルセル・ラヴェルデ |
| 開発者 | メタプラットフォーム |
| 初回リリース | 2010年2月 (2010年2月) |
| 安定版リリース | |
| リポジトリ | |
| 書かれた | PHP、ハック |
| プラットフォーム | クロスプラットフォーム |
| タイプ | PHPライブラリ |
| ライセンス | バージョン2.6より前: BSDライセンス、バージョン2.6以降: MITライセンス |
| Webサイト | hhvm.com |
XHPは、 Meta(旧Facebook)で開発されたPHPとHackの拡張機能で、 XML構文を用いてカスタムかつ再利用可能なHTML要素を作成できるようになっています。オープンソースソフトウェアのGitHubプロジェクトとして、またPHP 5.3、5.4、5.5用のHomebrewモジュールとして利用可能です。MetaはJavaScript向けにも同様の拡張機能であるJSXも開発しました。
起源
XHPはXML用のECMAScriptに大まかに影響を受け、Marcel Laverdetによって開発されました。当初はFacebook Lite向けの新しいUIレンダリングレイヤーとして開発されましたが、後にFacebookのwwwおよびモバイルウェブスタックに移植され、PHP用のHipHopにも組み込まれました。2010年2月に一般公開され[ 2 ]、2020年までFacebookアプリのサーバー側で生成されるHTMLのほぼすべてを占めていました。
2020年、Facebookは主要なウェブアプリ[ 3 ]を再設計し、サーバー側とクライアント側の両方でレンダリングされるReactコンポーネントを主に利用するようにしました。XHPはFacebookの一部のアプリで現在も使用されていますが、段階的に廃止されつつあるレガシーテクノロジーです。
利点
XHP は、PHP で HTML を出力するときに UI プログラミングに非常にクリーンなインターフェイスを提供しますが、エンジニアリング上の利点もいくつかあります。
- HTML構文の解析時検証
- XHP はレンダリング時にドキュメント ツリー全体の構文と構造を検証し、要素が適切に閉じられていない場合、要素に無効な子がある場合、要素に無効な属性がある場合、または必要な子や属性が欠落している場合は例外をスローします。
- 自動XSS保護
- ページへのすべてのレンダリングは XHP 内で行われ、XHP は HTML とコンテンツを認識しているため、プログラマーが特別な努力をしなくても XHP はすべてのコンテンツをエスケープします。
- オブジェクトの変化
- XHP オブジェクトは標準の PHP オブジェクトとして保存されるため、レンダリング前またはレンダリング中の、、など
setAttribute()のgetAttribute()メソッドを含む DOM のような API を介して操作できます。appendChild() - カスタムHTML
- HTML を生成する関数を記述したり、PHP を切り替えたりする代わりに、カスタム XHP 要素を定義して、一般的な HTML 構造を抽象化する標準 HTML 要素と混合することができます。
参照
参考文献
- ^ 「リリース」 . GitHub . 2023年2月3日.
- ^ Laverdet, Marcel. 「XHP: PHPの新しい書き方」 . Metaのエンジニアリング. Meta Platforms, Inc. 2023年2月10日閲覧。
- ^ N. Summers (2020年4月29日). 「FacebookがFacebook.comを再設計した理由」Engadget .
外部リンク
- 公式サイト

- GitHubのxhp-lib
- Code Before the Horse - XHP のインストール、使用方法、ベスト プラクティスに関する情報
- FacebookのXHP発表