《2022年AMFPHP入门教程 .pdf》由会员分享,可在线阅读,更多相关《2022年AMFPHP入门教程 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、AMFPHP 入门教程。不想传递拆分字符串,解析串行XML了吧?厌烦 JSON 了?试试 AMF吧,传送多种数据格式。首先下载 AMFPHP(本教程使用 1.9BETA2 )你可以选择其他版本在这里选择下载下载后,解压缩,把文件夹中的 amfphp文件夹拷贝到 APACHE 服务器的网站根目录。然后打开浏览器,输入http:/localhost/amfphp/gateway.php确定如果提示:amfphp and this gateway are installed correctly. You may now connect to this gateway from Flash. Note
2、: If youre reading an old tutorial, it will tell you that you should see a download window instead of this message. This confused people so this is the new behaviour starting from amfphp 1.2. View the amfphp documentationLoad the service browser说明安装成功。打开网站根目录的AMFPHP 文件夹,进入 SERVICES 文件夹,新建一个PHP文件命名为
3、HELLOWORLD.php 拷贝以下代码:methodTable = array ( say = array ( access = remote, description = Pings back a message ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - ); function say( $sMessage) return You said: . $sMessage; ? 保存!在浏览器地址栏输入http:/l
4、ocalhost/amfphp/browser/ 回车AMFPHP 的项目管理器:单击 HelloWorld 看到一下内容,就是HELLOWORLD项目具体内容:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 在 sMessage输入内容 (比如xiaoxiaocainiao),单击 call 按钮:看到页面下方的提示结果:好了,你已经初步学会安装AMFPHP 并使用了,具体的语法,函数,还需要查看一下官方的文档啦。下面一起来
5、做一个FLASH 通过 AMFPHP 和 PHP 交互的小例子:到这里下载 AMFPHP for FLASH8的组件,如果你使用其他版本,请到这里选择下载:http:/ ,查看 “ 窗口|公用库 |Remoting ” 就可以看到 AMFPHP 的组件了。新建立一个工程, 拖一个 RemotingClasses组件到舞台的任何地方, 再拖一个List 组件,命名为 myls, 拖一个 Button组件,命名为 mybt 在第一帧的代码行复制以下代码:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
6、 - - 第 3 页,共 21 页 - - - - - - - - - import mx.remoting.*; import mx.rpc.*; import mx.utils.Delegate; import mx.remoting.debug.NetDebug; var gatewayUrl:String = http:/localhost/amfphp/gateway.php; var service:Service; NetDebug.initialize(); service = new Service(gatewayUrl, null , PersonService); fun
7、ction getPerson() trace(getPerson); var pc:PendingCall = service.getPerson(); pc.responder = new RelayResponder(this , handleGetPerson); function handleGetPerson(re:ResultEvent) trace(handleGetPerson); trace(re.result.getItemAt(0).name); _root.mytree.dataProvider = re.result; _root.mydg.dataProvider
8、 = re.result; function onClick() getPerson(); mybt.addEventListener(click, Delegate.create(this , onClick); 在 AMFPHP 的 SERVICES 文件夹下新建一个文件,命名为PersonService.php 复制一下内容到 PersonService.php methodTable=array ( getPerson= array ( access=remote ) ); mysql_connect(localhost,root,wuliqunao); mysql_select_db
9、(test); function getPerson() $sql = sprintf(SELECT * FROM persons); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - $query= mysql_query($sql ); return$query; ? 好了,发布你的程序,单击Button按钮,看到结果:当然了,你的本机需要有个MYSQL 数据有,里面简历一个test 数据库,这个库里面创建一个 person
10、s数据表,表里 2 个字段,一个是 name ,一个是 age.(表告诉我, 你搞不好这个库啊, 搜一个 MYSQL 数据库入门教程, 一下就知道啦。)好了,大功告成,开始学习AMFPHP 之路吧 AMFPhp 与 Flex Builder3 的交互(一)写一下 php 与 Flex 的交互。作为学习笔记,现在这方面中文文档貌似比较少。下面的大多数都来自http:/www.sephiroth.it。英文好的同学可以直接去看。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共
11、21 页 - - - - - - - - - 好 , 先 说 一 下 我 的 基 本 配 置 吧 。 php 版 本 : php-5.2.6-Win32.zip, apache版本:apache_2.2.8-win32-x86,mysql 版本: mysql-5.0.51a-win32.具体的配置方法就不说了,去网上搜吧,太多了。我的本地服务放在 D:php 。 好, ok。在http:/ 载amfphp 压缩包,我的版本是 amfphp-1.9.beta.20070513.zip 。下载后,解压到我的本地服务目录,即 D:php 。然后再浏览器中输入:http:/localhost/amfp
12、hp/gateway.php 如果你看到了如下信息,就说明安装成功了。amfphp and this gateway are installed correctly. You may now connect to this gateway from Flash. AMF C Extension is loaded and enabled. Note: If youre reading an old tutorial, it will tell you that you should see a download window instead of this message. This conf
13、used people so this is the new behaviour starting from amfphp 1.2. View the amfphp documentation Load the service browser 好了, 让我们写一个HelloWorld程序吧。 首先打开D:phpamfphpservices目录, 新建一个 HelloWorld.php文件,在文件中输入以下代码:1. 复制代码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共
14、21 页 - - - - - - - - - 好啦, php 端,就先这样了。然后我们写flex端的吧。在Flex builder3新建一个Flex 工程。需要注意的是,在Application server type选择 php。呵呵,下一步。在web root 下 填 入D:php 即 我 的 本 地web 服 务 的 目 录 。 root url 填 入 :http:/127.0.0.1即本地 IP 啦,呵呵。 然后下一步,如果你不改源文件的目录的话,就直接 Finish啦。好,在 src 里再新建一个xml 文档,名字叫: services-config.xml ,打开,输入以下代码,
15、这个flex与 amfphp 的配置文件。1. 2. 3. 4. 5. 6. 7. 8. 9. 10.* 11. 12. 13. 14. 15. 16. 17. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - 18. 19. 20. 复制代码然后右键点击你的项目,选择Properties选项,在弹出的对话框里选择Flex Compiler,在Additional compiler arguments里加入 -services
16、services-config.xml,如图:点击 src ,打开 AMFphp.mxml ,好输入以下代码:1. 2. 3. 4. 5. 6.7. 8. 23. 24.25. 26. 27. 28. 29. 复制代码好,先不管代码的含义,我们运行一下吧,如果你看见了下面的图片,你就成功了。点击 sayHello按钮,看见它和你问好了吗?看见了! oh, Good.你太有天赋了,不编程可惜了,呵呵。今天先到这,有空继续。 (本文与作者博客同步更新,呵呵,做个广告,博客地址在下面) 好,让我们来分析一下这段代码吧!在 下呢,定义的就是RemoteObject 相关的一些东东. (这话题听着别扭)
17、 ,id 这个就不解释了,fault 就是当服务调用失败并且操作自身不处理时,调度fault 事件。showBusyCursor呢,如果为true,在执行服务时就会显示忙碌光标。在这里重点是后两个属性, source和 destination。source 后面写的是, 你在服务器上的文件名,也就是咱们用php写的那个类的文件的名字,即在D:phpamfphpservices 目录下,这个算是咱们本地服务的根目录。如果你要建一个新的目录为hello,然后把HelloWorld.php这个文件放进去,那么我们的程序应该改一下,即source = hello.HelloWorld 。destina
18、tion 有代表什么呢?服务的目 标 。 这 个 值 应 该 与services-config.xml文 件 中的 目 标 条 目 匹配 , 那 好 , 去找 一 下名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - services-config.xml 这个文件吧,看看有这个叫做destination 这个东东吗?该 这行了,很简单,这个就是咱们要用的方法啊,名字和php 里面方法的名字要一致哦。另外, 需要注意的是在我们的显
19、示界面的代码中,在 label 为 sayHello 的 里面,click = myservice.getOperation(sayHello).send ,这行代码的意思就是当我们点击按钮的时候,将要执行我们的remoteObject 对像中的sayHello 方法,并且等待result 事件,如果一切顺 利 , php端 会 给 我 们 返 回 一 个 叫 做 Hello world 的 字 符 串 , 然 后 , 将 去 调 用 里面的 ResultHandler 函数,接着我们的result_text 文本就有任务啦, 那就是显示这个字符串。怎么样,很简单吧。(其他的请看源代码注释,我
20、也是刚研究,有错误的地方请指正)哇,今天学到了不少东西,明天继续。原来世界这么美好!1. 2. 3. 4. 5. 6.7. 8. 27. 28. 29. 30. 31. 32. 33. 复制代码Amfphp 与 Flex 交互 -(三 ) 向 php 端写数据,并读返回数据好 ,还 记 得 我 们 第 一 章 讲 得 吗 ? 不记 得 啦 ?看 下 这 个链 接 啊http:/ - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 21 页 - - - - - - - - - 我们今天做的
21、呢,前端,只要在第一章代码的基础上修改一下就好了,主要的是php 端的改变。所以呢,你可以在你以前的工程里面新建一个Application ,然后粘贴下面的代码哦。先看一下flex 端的代码:1. 2. 3. 4. 5. 6.7. 8. 27. 28. 29. 30. 31. 32. 33.34. 复制代码发现变化了吗?没有?再仔细瞅瞅,哦!原来,在第三行,source里面,多了一个这个东东hello.AddEmialDb ,这个是干什么的呢?就是帮助flex 找到 php 的文件啊。在第 4 行, 即 定义 RemoteObject 的里面,我们换了一个叫做InputUser 的函数,当然,
22、这个一定是php 端函数啦。 在第 29 行,按钮的 click 事件里面getOperation 的参数也同样改变为InputUser,另外send()函数里面好像多了一个文本信息,猜猜?恩,对,这个就是要向Amfphp 端发送的东东。很好理解。对吧?然后是 php 端,在 D:webrootamfphpservices 新建一个hello 目录,在这个目录中再新建一个叫做 AddEmailDb.php 的文件 。然后用你所熟悉的编辑器打开它,敲入以下代码:(“ 傻瓜,我才不敲呢,我要copy 过去。 ”好吧,随你!)1. 复制代码运行你的Apache ,开启你的mysql 。在mysql里
23、面要建立一个数据库(我用的是phpMyAdmin ) ,起个名字叫做“ mmmm” ,建立一张表叫做“ mmmm” ,表有两个字段,一个叫做 “id ”,另一个叫做 “adressemail ”。好!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 21 页 - - - - - - - - - 在 flex 端运行。看到与下面这张图一样的界面了吗?看到了?继续,在文本区域内,输入一个邮件地址吧。然后点击Send按钮,如果文本框里出现了一个success的单词,那么恭喜你,
24、成功了。你太有才了,还真不是盖的。哈哈!)php 端的代码是啥意思呢?首先我们看到一个叫做 AddEmailDb 的类,这里一定要注意,这个类的名字一定要和这个文件的名字相同,然后是 InputUser($post)这个函数, 它带了一个参数,这个参数就是我们用来接收Flex 端 result_text.text 里面的信息的。然后呢,下面是一对链接mysql 的语句,关键的是1.2.else 3. 4. $sql = Insert INTO mmmm(id, adressemail) VALUES (,$post); 5. mysql_query($sql); 6. 复制代码这段代码,就是往
25、数据库里面插入信息啊。最后还注意一个 return success; 这个就是我们发送成功后返回的那个单词啊,怎么样,很好理解吧。看到这, 你还犹豫什么呢?继续在code 的世界里面遨游吧。没有解决不了的问题哈!加油!AMFPhp与 Flex3 交互(二) -一个带有DataGrid 稍微复杂的例子今天我们做一个稍微复杂的例子,在这个例子中,我们将要用到ArrayCollection作为返回的结果。在这个例子中,我们可爱的remote 方法将会返回一个数组,数组中的值哪来的呢,就是在 Person类里面的属性,呵呵。首先在我们的本地服务大本营,D:phpamfphpservices (为啥这个
26、是大本营啊,去看看教程的第一节,呵呵),建立一个叫做tutorials(认识这个单词吗?它是“ 指南” 的意思,我又学会了个单词 )的目录,我们今天要在这个目录里写一些php 文档。废话不多说,上代码!建立名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 21 页 - - - - - - - - - 一个叫做Person.php 的文档。代码如下:1. 复制代码在这里面我们看到这样一个变量$_explicitType , 这位老兄是干什么的呢?他是告诉amfphp老大,这
27、个类是与flash 中的 tutorials.Person(注意,这里的这个类是在flash 中的,我们还没有建立, 马上我们就要创建它)这个类等价的。 好,既然你告诉amfphp 老大有这个类了,那就要建立一个啊,要不被老大揍可不是闹着玩的。好,上一节我们已经建立了一个工程,我们就还用那个工程吧,点击打开src 文件夹,右键新建一个文件夹,起名字叫做tutorials,在这个文件夹中再建立一个Person.as文件。好,把下面的代码拷贝进去。1.package tutorials 2. 3. RemoteClass(alias=tutorials.Person) 4. Bindable 5.
28、 public class Person 6. 7. public var firstName:String; 8. public var lastName:String; 9. public var phone:String; 10. public var email:String; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 21 页 - - - - - - - - - 11. 12. 复制代码代码很简单吧,就是一个叫着Person的类,他有4 个公共属性。回
29、到我 们 的 大 本 营D:phpamfphpservices , 在tutorials目 录 中 新 建 一 个PersonService.php 的文档,把下面的代码拷贝进去。1.?php 2.3.require_once ./Person.php; 4.5.6.class PersonService 7. 8. /* 9. * Get a list of people 10. * returns An Array of Person 11. */ 12. function getList() 13. 14. $people = array( 15. array(Alessandro, C
30、rugnola, +390332730999, alessandrosephiroth.it), 16. array(Patrick, Mineault, +1234567890, ), 17. ); 18.19. $p = array(); 20.21. for($a = 0; $a firstName = $people$a0; 25. $person-lastName = $people$a1; 26. $person-phone = $people$a2; 27. $person-email = $people$a3; 28. $p = $person; 29. 30.31. retu
31、rn $p; 32. 33. 34.35.? 复制代码在 getList 函数中,有一个保存人信息的数组people,然后我们做一个循环,把这些信息交给 person (person 是我们通过Person新找的一个对象) 这个对象的属性中, 然后我们把person对象装进p 这个箱子 (数组 )中,然后返回p。 Ok 啦,代码也很好理解,对不对?好了,最后一步了, 在工程中的src 目录里, 右键点击src,新建一个叫做DataGrid.mxml 的 MXMLApplication的文件吧。工程如图:调到 source模式,拷贝以下代码。1. 2. 3. 4. 5. 6. 7. 名师资料总结
32、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 21 页 - - - - - - - - - 8. 9. 10. 11. 12. 13. 14.15. 16. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 21 页 - - - -
33、 - - - - - 62. 63. 复制代码哈哈。运行一下,是不是这个界面。是?点击getlist 按钮,看有 DataGrid 里有信息出现吗?有!点击 DataGrid 有信息的任何一行。地下的文本框有信息显示吗?有!你又成功了 ! 在编程的道路上又迈出了坚实的一步。加油啊,天才!代码是啥意思呢?天才,先自己分析一下。明天继续。来吧,一起分析一下代码吧。关于 标签里的内容,上一节已经说过了,什么!忘记了?点击这个链接看看吧。http:/ 面 来 说 一 下DataGrid标 签 里 面 的 东 东 , 这 里 面 唯 一 需 要 注 意 的 就 是dataProvider=dp ,这个,
34、他是为DataGrid提供数据的源头,所以一定要有,否则DataGrid 找不到数据。因为我们返回的dp 是一个数组,因此GataGrid会自动把信息加上,但是一定要注意,dataField的名字一定要和数组里属性的名字一样啊。很聪明吧?然后是 change 事件,这个事件表示的当我们点击DataGrid 的时候,即选择DataGrid 条目的时候,响应的一个事件函数。函数在哪呢?往下看,在as3 脚本里,是不是看到了一个private的 changeHandler函数啊,当我们点击DataGrid的条目的时候,我们会把点击的那个条目强制转化为Person 类型的对象, 并把这个对象传递给selectedPerson,这样在下面的 TextInput里面我们就可以用selectedPerson的属性来赋值了, 怎么样?也很简单吧!其他的如果不明白ArrayCollection等等这些的话,开始查找帮助文档吧。那里有我们要的一切。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 21 页 - - - - - - - - -