「Phalanger」の版間の差分

3行目: 3行目:


== CLR版とDLR版 ==
== CLR版とDLR版 ==
Phalangerプロジェクトでは、[[PHP]]の[[ソースコード]]を事前に[[コンパイル]]を行う[[共通言語ランタイム]]([[CLR]])向け[[コンパイラ]]と、[[インタプリタ]]風に扱える[[動的言語ランタイム ]]([[DLR]])向けコンパイラの2種類を提供している。
Phalangerプロジェクトでは、[[PHP]]の[[ソースコード]]を事前に[[コンパイル]]を行う[[共通言語ランタイム]]([[CLR]])向け[[コンパイラ]]と、[[インタプリタ]]風に扱える[[動的言語ランタイム]]([[DLR]])向けコンパイラの2種類を提供している。


CLR版は[[C Sharp|C#]]などと同様に事前にコンパイルし、実行ファイルなどを生成する方式となっている。
CLR版は[[C Sharp|C#]]などと同様に事前にコンパイルし実行ファイルなどを生成する方式となっている。
Phalangerは、[[PHP]]で書かれたアプリケーションのセキュリティ向上とパフォーマンス向上、および完全な64bit対応を主目的として開発が進められており、CLR版はPHP向けソースコード品質検証ツールとしての意味合いも強い。また、[[CLR]]版を用いてPHPソースコードをCILバイトコードに変換しておけば、プロプライエタリなアプリケーション向けの簡易的なソースコード難読化ソフトとしても使える。
Phalangerは[[PHP]]で書かれたアプリケーションの[[セキュリティ]]向上と[[パフォーマンス]]向上、および完全な64bit対応を主目的として開発が進められており、CLR版はPHP向けソースコード品質検証ツールとしての意味合いも強い。また、[[CLR]]版を用いてPHPソースコードをCILバイトコードに変換しておけば[[プロプライエタリ]]な[[アプリケーション]]向けの簡易的なソースコード難読化ソフトとしても使える。


DLR版は純正[[PHP]]と同様の使い勝手を実現したものであり、使い勝手は[[インタプリタ]]に近く、クラスや関数の初回利用時に動的に逐次コンパイルが行われ実行される。なお、コンパイル結果物はキャッシュされ、クラスや関数を再度使用する際にはコンパイルは行われずにキャッシュを用いるため、多くの場面において非常に高速に動作する。
DLR版は純正[[PHP]]と同様の使い勝手を実現したものであり、使い勝手は[[インタプリタ]]に近く、クラスや関数などは初回利用時に動的に逐次コンパイルが行われ実行される。なお、コンパイル結果物はキャッシュされ、クラスや関数を再度使用する際にはコンパイルは行われずにキャッシュを用いるため、多くの場面において非常に高速に動作する。


なお、Phalangerプロジェクトでは、PHPアプリケーションのセキュリティ向上のためにも、Webアプリケーションの開発中はDLR版で手軽に、本番運用前にはCLR版で事前に完全にコンパイルが通り、警告なども完全に出ない状態にするのが望ましいとしている。
なお、PhalangerプロジェクトではPHPアプリケーションの[[セキュリティ]]向上のためにも、Webアプリケーションの開発中はDLR版で手軽に、本番運用前にはCLR版で事前に完全にコンパイルが通り警告なども完全に出ない状態にするのが望ましいとしている。


== 互換性 ==
== 互換性 ==