PHP言語がWeb開発で最も普及しているとは言えないにしても、非常に普及していると思っても、私はほとんど間違いありません。 この理由(特に結果)を分析するのではなく、1つの小さな側面、つまりPHPで複雑なAJAX Webアプリケーションを開発する方法に集中します。 そして、単に開発するだけでなく、 ExtJSライブラリを使用して、これらのWebアプリケーションのインターフェースを作成できます。 もちろん、これはすべてサーバー側、PHP、または他の言語で実行できます。JSONデータと通常のHTMLを操作するだけで、クライアント部分とAJAXライブラリについては何も知りません。 しかし、別の方法で行うこともできます-このアプローチは、今日人気のあるGoogle Web Toolkitテクノロジーに似ています 。 何も共有せず、1つの環境、1つの言語、およびすべての機能(言語と環境の両方)を使用してアプリケーションを記述するだけで、サーバーは既に完全に自動的にクライアントのコードを独立して生成します。 したがって、レイアウト、JavaScript、およびExtJSを完全に(ほとんど、またはまったく)知らないで理解することはできませんが、このフレームワークを使用するアプリケーションを作成できます。
Javaの場合、そのようなソリューションが存在し、最近、そのようなプロジェクトEXT GWTがExtJS開発会社自体の管理下に置かれ、非常に深刻なプロフェッショナルソリューションに変わりました。 しかし、他の言語はどうですか? Javaはもちろん優れていて優れていますが、魂と体は多様性を望んでいるか、単に学び直したくないだけです。 そのような場合には、解決策があります。 また、PHPの1つはPHP-Extと呼ばれます 。
このライブラリはクラスのセットであり、ExtJSからクラスを部分的に繰り返します。これらはPHPで書き換えられ、出力JSコードを生成するメカニズムが追加され、実際にはブラウザに送信されて実行されます。 開発者はPHPでのみ動作します-ライブラリを接続して初期化し、次に必要なオブジェクトをPHPクラスの形式で作成し、それらに必要なプロパティを設定し、コードの最後でJavaScript生成を呼び出してブラウザーに送信します。
もちろん、このアプローチにより、構文補完、コードの強調表示、組み込みデバッガー、その他のコード検証ツールなど、お気に入りの開発環境のすべての機能を使用できます。 -JavaScript用よりもPHP用のツールがはるかに多いことは秘密ではありません。
ライブラリ自体のコードは非常に大きいですが、現在のバージョンはPHP 5と完全に互換性があり、特に、利用可能なすべてのOOP機能を使用します。 コード自体はかなり完全に文書化されていますが(完全ではありません)、その構造はZend Framework PHP Coding Standardに準拠しています。これは、アマチュアプロジェクトの開発ではあまり見られません。 (そして、突然、ExtJS開発会社はExtGWTで行われたようにプロジェクトに参加します。この場合、スタートアッププロジェクトと非常に成功したプロジェクトについて話すことができます)。 開発者向けには、フォームなどの標準オブジェクトを使用したいくつかの例があります。独自の例を作成することなく、ライブラリの作成者は標準のExtJSパッケージに含まれるものを単純に書き換え、ライブラリを使用してそれらを書き換えます。 これは、実際の機能を調べたり、生成されたコードを比較したりするのに最適な方法です。 綿密な調査のために、phpDocumentatorを使用してコード内のコメントによって生成されたAPIヘルプがあります。
ただし、これまでのところ、可能性はまだ実現されていませんが、比較的複雑なアプリケーションを構築するには十分な可能性があります。 いくつかの欠点では、プロジェクトの目新しさを控えて、以前のバージョンのExtJS-2.0.2(2.0.1で動作しますが)の使用についても書き留めておきますが、現在は2.1に焦点を当てる価値があります。 しかし、これは修正されます。これは、2番目のリリースのみが0.8.2の数字になっているためです。したがって、現時点では、単に技術を改善しているだけだと考えています。
ライブラリの開発の可能性は非常に大きく、特に、ExtJS API全体をPHP側に完全に転送するというパスに沿って、およびプラットフォーム自体の改善に向かっています。 たとえば、コードを圧縮し、使用されていないモジュールを削除するためにコードジェネレーターの手段を使用することは論理的です(使用されるクラスとその依存関係に基づいて、サーバーは必要なクラスのセットをオンザフライで構築し、アプリケーションのExtJSアセンブリを生成できますが、現時点では手動で実行できますオンラインデザイナーを助ける)。 このプロジェクトはまだ若いですが、十分に迅速に開発されており、専門家や本格的なアーキテクチャが開発の背後にある場合、最新のAJAXアプリケーションを開発するための優れたツールになる可能性があります。
私の意見では、このオプションはやや複雑であるか、コードが多すぎてインターフェースを生成するために操作しますが、それでもページの生成方法とこのJavaScriptコードがどのように機能するかを明確に理解する必要がありますサーバー側がクライアントを完全に認識していない場合、通常の開発オプションよりもExtJSとその機能を知っています。 ただし、SmartyやTemplate Lite(私のお気に入り)などのテンプレートエンジンを組み合わせたプロジェクトは、複雑なテンプレートの作成と入力を簡素化すると素晴らしいでしょう。 同時に、ExtJSのすべての最新バージョンは、フォームやウィンドウなどのJSONマークアップを使用してビジュアルパーツを生成できるため、サーバー側を簡素化する多くの方法があります。 -JSONデータの形式。 しかし、これはまったく異なるアーキテクチャとアプローチです。
そして最後に、PHP-Extのメカニズムを明確に理解するために1つの例を示します。 次の例は、最小化および拡張可能な通常のパネルを表示します。これは、最も使用されているユニバーサルライブラリウィジェットの1つです。
1.したがって、パネルはブラウザで表示されます
2.これは、このパネルを生成し、そのパラメーターを設定するためのPHP上のコードです。
setTitle(「マイパネル」) -> setCollapsible(true) -> setRenderTo(PhpExt_Javascript ::変数( "Ext.get( 'centercolumn')")) -> setWidth(400) -> setHtml(PhpExt_Javascript ::変数( "Ext.example.bogusMarkup")); echo PhpExt_Ext :: OnReady( $ p-> getJavascript(false、 "p") ); ?>
3.これは、PHP-Extがこのフォームを表示するために生成したコードです(ページ自体のコードおよびライブラリーの接続なし)。
Ext.onReady(関数(){ var p = new Ext.Panel({title: 'My Panel'、collapsible:true、 renderTo:Ext.get( 'centercolumn')、幅:400、html: Ext.example.bogusMarkup}); });
4.そして、これはExtJSの例の元のコードです
Ext.onReady(関数(){ var p = new Ext.Panel({ タイトル:「マイパネル」、 折りたたみ可能:true、 renderTo: 'コンテナ'、 幅:400、 html:Ext.example.bogusMarkup }); });
PS ブログからのクロスポスト。