ActionScriptからPHPの関数を実行。
ActionScriptからPHPを実行するには、「URLLoader」を使ってPHPファイルにアクセスすることができます。その際に引数を渡すには「URLVariables」でGET、またはPOSTの変数を渡すことができます。
この方法では、アクセスするPHPファイル全体を実行します。
PHPファイル内の任意の関数のみを実行するには、ActionScriptからGET、またはPOSTの変数を経由し、PHPの関数名の文字列を変数で渡して、PHP側で文字列を関数名として評価することで任意の関数を実行できます。
ActionScriptでは、次のように記述します。(ドキュメントクラスに書いています)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package { import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; import flash.text.TextField; public class Main extends Sprite { public function Main() { var url_variables:URLVariables = new URLVariables(); var url_request:URLRequest = new URLRequest("functions.php"); var loader:URLLoader = new URLLoader(); //PHPリクエストのPOST変数にPHPの関数名を含める url_variables.function_name = "test"; url_request.method = URLRequestMethod.POST; url_request.data = url_variables; //PHPを実行(読み込み) loader.addEventListener(Event.COMPLETE, onComplete); loader.load(url_request); //PHPの実行が完了したとき function onComplete(event:Event):void { //テキストフィールドを作成して、PHP関数の出力を表示 var textfield:TextField = new TextField(); stage.addChild(textfield); textfield.text = event.target.data; } } } } |
PHPファイル「functions.php」にPOST変数で関数名「function_name」を文字列で渡します。PHPファイルの読み込み(実行)が完了したら「onComplete」にて、PHPで出力された文字列「event.target.data」を扱えるようになります。
PHPファイル「functions.php」には、次のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php //POST変数「function_name」の関数が存在したら実行 $function = $_POST['function_name']; if (function_exists($function)) $function(); function test() { //文字列を出力(ActionScriptに渡す) echo "function test"; } ?> |
「$function」にPOST変数の「function_name」を代入して、同名の関数が存在していたら実行します。
PHPから出力された文字列は、そのままActionScriptで受け取ることができます。