SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Zend Framework入門

PHPアプリからFlashコンテンツにアクセスしよう - Zend_Amf -

Zend Frameworkによる実践的なPHPアプリケーション開発 21


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード sample.zip (205.0 KB)

オブジェクトの受け渡し

 ここで、後まわしにしたオブジェクトの受け渡しについて説明します。FlashとPHPとの間でデータをやりとりするのに、一番簡単なのは文字列を利用する方法です。この場合には渡す方も(リスト4の(1-6))受け取る方(リスト6)も、そのまま文字列を指定してやればうまくいきます。一方で、構造を持ったオブジェクトをやりとりする場合、Flash側のどのクラスがPHP側のどのクラスに対応するかを明示する必要があります。そのためのメソッドがZend_Amf_ServerクラスのsetClassMapメソッドです(リスト5の(3-6))。

 今回のサンプルではFlash側のDataASクラスとPHP側のDataPHPクラスが対応しています。どちらのクラスもパブリックにアクセス可能なメンバー変数dataを持ちます。DataASクラスはリスト7のように定義されています。

[リスト7]Flash側のクラス定義(DataAS.as)
package {
  [Bindable]
  [RemoteClass(alias="DataAS")]
  public class DataAS
  {
    public var data:String;
  }
}

 このうちBindableタグは、このクラスが外部のシステムのオブジェクトと関連付けられる可能性があることを示しています(この指定を行うと、このオブジェクトの値に変更が生じた場合にイベントが発生します)。また、RemoteClassタグによって、このクラス外部にオブジェクトを持てることを指定し、対外的には「DataAS」と名乗ることを指定しています。

 このDataASクラスに対応するPHP側のクラスDataPHPはリスト8のように定義されています。

[リスト8]PHP側のクラス定義(DataPHP.php)
<?php
class DataPHP
{
  public $data;
}

 このように対応するクラスをおのおの定義しておき(リスト7と8)、setClassMapで対応関係(リスト5の(3-6))を指定することで、FlashとPHPの間でオブジェクトのやりとりができます。

おわりに

 今回はZend FrameworkとFlashとの通信を担当するモジュール、Zend_Amfについての解説を行いました。「Flash内ではイベントに応じてAMFでリクエストするだけ」「Zend Framework側ではZend_Amf_Serverにメソッドを登録してhandleメソッドを呼ぶだけ」と、手軽に通信が行えることがお分かりいただけると思います。

 次回はZend_Domについて取り上げたいと思います。Zend_DomはDOMドキュメントを扱うためのモジュールで、現在のところはCSSセレクタによってDOMドキュメントにアクセスするための機能を提供しています。

「FlexではじめるRIA開発」特集、絶賛公開中!
修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Zend Framework入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4030 2009/12/03 12:15

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング