AMFPHPでのアプリケーション開発

奇妙なことに、広大なインターネットでは、AMFPHPでアプリケーションを開発するための単一の本格的なマニュアル(とにかく、ロシア語)は見つかりませんでした。 約1年前、私はこの種の記事が本当に必要でしたが、それがないため、さまざまなソースからすべての穀物を収集する必要がありました。 彼女が誰かに役立つことを願っています。



Amf



それでは、AMFとは何ですか? バイクという言葉を再発明することはせず、ウィキに助けを求めます。



AMF (Action Message Format)は、アクションスクリプトで記述されたアプリケーションで使用されるバイナリデータ交換フォーマットです。 Simple Object Access Protocolに基づいて構築され、主にAdobe Flashとデータベース間の情報交換に使用されます。 Action Message Formatは、XMLよりもトラフィックが経済的であり、型指定されたオブジェクトを転送できます。 2007年12月13日発表



現時点では、AMFはフラッシュアプ​​リケーションとサーバー側の間で最も関連性の高いデータ転送形式です。 AMFを操作するためのライブラリは、ほぼすべてのサーバー言語用に存在しますが、今日はPHPについて説明します。



AMFPHP対 Zend AMF



アプリケーションのサーバー部分としてPHPを選択したら、今後この形式で使用するパッケージを決定する必要があります。 現時点では、最も関連性の高いプロジェクトが2つあります。AMFPHPとZend AMFです。 2つの製品に大きな違いはないので、それは好みの問題ですが、私はプロジェクトにAMFPHPを選択しました。





はじめに



これはAMPHPのマニュアルであり、AMF全体ではないため、サーバー部分に直接焦点を当てます。 さらに、ほとんどの場合、フラッシュはサーバー上のどんな種類の獣にも関係ありません。すべてのリクエストはAMF形式に共通するため、ネットワーク上の多数の関連資料です。



プロジェクトのルートがWebサーバーのルートであるとします。 私のマニュアルでは、それを/と指定します。 最初にすべきことは、安定版のAMFPHPをダウンロードし(この記事を書いている時点ではバージョン1.9です)、 / amfphpでアーカイブを解凍することです。



ここで、少しセットアップする必要があります。 これを行うには:







デフォルトゲートウェイ



ここで、クライアント側からのすべてのAMFリクエストが送信される先として、getwayを作成する必要があります。 もちろん、標準の/amfphp/gateway.phpで取得できますが、呼び出す前にアプリケーションを設定する必要あります(クラスの初期化、データベースへの接続など)



次のようなもので/gateway.phpファイルを作成します。



<?php



// ROOTディレクトリ

define 'ROOT' '/ var / www / html /' ;



//タイムゾーン

date_default_timezone_set 'Europe / Moscow' ;



//クラスをロードします

ROOTが必要です 'loader.php' ;



// amfphpをロードします

require_once ROOT 'amfphp / gateway.php' ;




これで、すべてのブートアクションを/loader.phpで実行できます。



サービスとVOクラス



すべてのサービスは/ amfphp / servicesフォルダーに保存されます。 プロジェクトがMVCアーキテクチャを含意している場合(ただし、この場合Vはあまり適切ではありません)、サービス自体がコントローラーとして機能できます。 これらのコントローラーサービスは、任意のクラスから継承できます(これはマッピングに影響しません)。その助けを借りて、モデルやアプリケーションの他のメソッドやデータへのアクセスを整理できます。 ServiceName.MethodNameという形式のAMFリクエストは、ServiceNameクラスのMethodName()メソッドに送信されます。このメソッドは、ファイル/amfphp/services/ServiceName.phpに記述されている必要があります



VOValue Object )クラスは、ASとアプリケーションのサーバー側の間のマッピングに使用できるクラスです。 すべてのVOクラスは、 / amfphp / services / Voフォルダーに配置する必要があります。 サーバー側でオブジェクトを作成するには、ファイルを手動でインクルードする必要がありますが、AMFリクエストに付属するクラスの説明を含むファイルは自動的にロードされます。 しかし、すばらしい__autoload()関数を使用すると、これらの質問はすべて消えます。



<?php



関数 __autoload $ class

{

if file_exists ROOT 'amfphp / services / Vo /'。$ class '.php' ))

{

// VO

ROOTが必要です 'amfphp / services / Vo /' $クラス '.php' ;

trueを 返し ます

}

他に

{

//エラー

新しい例外をスローします 'クラス\' ' $クラス ' \ '位置を特定できませんでした!' ;

falseを 返し ます

}

}




UserDataVOクラスをクライアントに送信する必要があるとします。 これを行うには、次の内容の/amfphp/services/Vo/UserDataVO.phpファイルを作成します。



<?php



クラス UserDataVO

{

//明示的なタイプ

var $ _explicitType = 'UserDataVO' ;



//ここにいくつかのユーザーデータ...

}




そしてもう1つの重要なポイント。 クライアント側のVOクラスの名前にピリオドが含まれている場合、amfphpはからスラッシュに変換します。 これは、ASクラスapp.Vo.UserDataVOが/amfphp/services/Vo/app/Vo/UserDataVo.phpファイルに次のように記述されることを意味します。



<?php



クラス UserDataVO

{

//明示的なタイプ

var $ _explicitType = 'app.Vo.UserDataVO' ;



//ここにいくつかのユーザーデータ...

}


explict型にはクラスの完全な名前が含まれていますが、phpクラス自体の名前は最後の部分にすぎないことに注意してください。



それだけです この記事は、AMF全般、特にAMFPHPに最初に出会った開発者にとって役立つと思います。 ご清聴ありがとうございました。



All Articles