搜索

  •  

大量的Flash,Flex,Zend和PHP的示例

出自9RIA.com WIKI

跳转到: 导航, 搜索

注:此网页上的内容最早于2008年10月23号出现在作者的博客。

关于作者

Kevin Hoyt是Adobe系统的平台宣传人员。热情地致力于改进用户体验,你经常能看到他和客户进行交流,在会议上演讲,举办网上会谈,或者抓住任何机会与其它开发人员分享想法。当他不工作时,Kevin喜欢陪伴家人,摄影和飞行。

点击此处查看或参与本主题讨论吧:)点击此处查看或参与讨论吧:)

什么?PHP, Zend,加上Adobe的精髓。为什么?因为我非常著迷,无法阻止自己从每个可能的方面反复重申一个问题。取决于你的统计方法,在某些地方有13到54个不同的Flash、与/或Flex示例包含在这个存档文件中 - 这甚至没有统计不同的PHP示例(也被包括)。我开始用这些例子是在Adobe和Zend发布声明支持相关的Flex Builder和AMF的时候。在Wade Arnold的一路指引下,现在有了相当巨大的收获。

目录

ActionScript

我知道你是谁! 你是那个使用Flex Builder,但不是Flex框架的家伙。 这是真的! 它发生了! 我会避开政治上的泥潭,在Flash的世界里它是编辑,只想说,这个例子告诉你,如何用一个Flex Builder开发的纯ActionScript项目连接一个“HelloWorld”的PHP对象,但没有使用Flex框架而是通过Zend AMF。

图表

图表方案在PHP的世界是站不住脚的,对我而言这早就是非常显而易见的。 破坏点阵图的需求? 计算维度,利用线路,找出范围? 无论什么! 这些示例按部就班的详细指引你使用Flex图表组件创建真正有效和强大的图表。 输入一些数据到线性图表中,这非常容易进行。 然后我们添加数据提示。 然后我们添加样式。 然后我们添加格式。 然后我们添加过滤器。 然后我们通过一个ViewStack来添加交替的视图。 然后,我们用完整的Zend框架让网站看起来和感觉起来是一个完全交互式数据可视化的应用。

fig1.jpg

数据

你知道,因为一个没有数据的Flex应用程序会是什么样的? 我在MAMP上开发了这些示例,它包含了MySQL。 如果你在使用相同的端口信息,预设的用户名和密码作为你的开发/测试环境,那么你将可以很好的进行下去。 如果你没有,你想要的仅仅是将数据放到你自己拥有的配置里面,我提供给你一个XML格式的示例数据,还有包含表结构的SQL转储。

桌面

我知道,有时它看起来像直观的计数器。 我们不能远离桌面而移植到web上么? 不管这个变化,都有一些好的理由,对于web开发者桌面问题,什么时候你愿意去,你可以非常容易的实现,利用Adobe AIR进行跨平台。 这些示例采用基于Flex的应用,通过Zend AMF将PHP数据访问对象(DAO)与桌面Adobe AIR应用进行连接。 你可以从基本的web版本开始,推入一个AIR的窗口。 然后,你可以添加本地的拖放上传一个vCard文件。 然后,你需要检查看看是否网络还是可用的。 然后,你可以完全离线工作,利用属于AIR一部分的嵌入式SQLite数据库。 提供了vCards的示例。

fig2.jpg

外部的

没有人喜欢难以维护的代码。 所以,对于采用老旧的程序代码和使其可维护你需要做的第一件事情是什么呢? 没错了,你需要将所有核心逻辑分离成独立的PHP文件,然后再任何你需要这个功能的地方包含文件。 这就是这个例子说明的问题。 在服务器端PHP部分,所有核心数据库访问都存储在它自身舒适的脚本中。 然后,该脚本包含在许多外部的PHP文件中提供类似XML的功能。 为了帮助你处理,有增量的建立flex应用的每一步 - 从获取初始设置数据到完成CRUD应用。

Flash

你是否知道,在Flash创作环境中已经包含组件好长时间了? 他们与Flex组件有本质上的区别,但是他们却存在;在你可能创建的许多不同的模拟实验中,比一次性应用样式功能伟大。 这里有两个完整的应用程序使用了这些组件,FLA文件支持Flash CS3和Flash CS4。 一个应用程序通过XML与PHP连接,而另外一个通过Zend AMF。 我要大量使用"文档类"的概念,所以为自己好好准备ActionScript 3。

fig3.jpg

你好AMF

有什么比好的老式"hello world"更好的呢? "ActionScript"示例着手于Zend AMF,使用了纯ActionScript工程。 本示例使用Flex框架来与那个"HelloWorld"PHP类Zend AMF连接。 有时候你仅仅需要基本的让你开始,并且如果所有的阶段性开发和你有多样的方法,这就是开始的地方。

你好 文本

你没有看到它常常发生,但是我们没有理由认为从Flex调用的我们的服务必须是XML,SOAP或者AMF。 如果你喜欢一大堆文字,并且亲自处理数据,那么就是我们的客户。 此示例显示连接Flex到PHP端点返回一个纯文本字符串。 在这个例子中,该值仅仅是输出到屏幕,但是你可以使用逗号分隔值(CSV)的方法来处理,或者可能是服务器端点提供你无法控制的任何其他文本。

你好 XML

这是服务器和Flash交互的实际标准。 你通过HTTP请求发送了一个查询字符串出去,然后得到了XML的数据返回。 当然Flash Player通过ECMAScript for XML(E4X)已经有很好的XML处理方式。 在这个例子中,你将传递查询字符串到PHP部分,PHP处理后返回一些数据信息在XML中。 很快,两个猜想,回应会说些什么!

内置

在当今你并不总是魔术代码的人。 你必须从某些地方开始。 或者你是维护其他人的代码。 在你理解模块化的值和代码重用之前,最常见的方式是将所有东西都塞进一个PHP文件来完成工作。 这个例子涉及这种情况。 如果你倾向于所有内容在一个PHP脚本中,这个例子扩展了一个完整的CRUD应用,使用XML作为返回的格式,以满足每个你可能有的强烈请求。

对象

是! 这是真的! PHP可以面向对象! 我仍然会听到一些如PHP是过程式的这样的偏见,这个例子所列出的证明了这种偏见是错误的。 在PHP端你将会导致样式灭亡,通过创建一个DAO利用工厂(助手)来连接到数据库,然后使用值对象(VO)代码传统的关联数组。 良好的由面向对象组成的基础结构被用于返回XML到一个Flex客户端。 在客户端,再次上演一个完整的CRUD应用分阶段创建提供给你,以引导你学习Flex。

远程

一般来说,AMF像对象,Zend AMF也不例外。 在"Object"例子中,对应每个CRUD操作有一个额外的PHP脚本。 这意味着你有更多的工作来揭露奇妙的面向对象代码的XML。 XML在其自身来说恰好是完全太多沉重 - 尤其是它应用企业时。 在这个例子中,我们采用了来自于"Object"示例中的一个类,通过Zend AMF到一个Flex应用程序来演示。 因为我可以,分阶段建立也包括在这方面,以引导你使用完整的CRUD操作来建立一个Flex应用。

REST

你说"番茄",我说"西红柿"... 呃,就像这样。 Zend框架包含了REST服务功能。 虽然它不是真正的REST,它使用了旧的查询字符串,XML的进行方式,我们仍旧讨论XML,这正是我们在创建Flex应用程序时需要希望的。 这里有两个例子使用了Zend REST服务功能。 借助于"External"示例中的外部脚本,我们可以立即看到XML的类似功能。 你看到了一个可以实现的例子,但是问题是,其结果在格式方面没有特别友好地进行迭代。 此外还有一个例子,它显示了定制Zend REST服务器的XML响应,更适合于一个SOA应用的需求。 是的,分阶段完成CRUD功能创建也在这里提供了。 <?xml version="1.0" encoding="UTF-8"?> <getContacts generator="zend" version="1.0">

 <key_0>
   <id>1</id>
   <firstname>Ryan</firstname>
   <lastname>Stewart</lastname>
   <email>rstewart@adobe.com</email>
   <mobile>123-456-7890</mobile>
 </key_0>
 <key_1>
   <id>2</id>
   <firstname>Mike</firstname>
   <lastname>Downey</lastname>
   <email>mdowney@adobe.com</email>
   <mobile>111-222-3333</mobile>
 </key_1>
 <status>success</status>

</getContacts>

上传

Flash Player已经具备类上传及下载文件的能力。 这个功能强大的地方在于,它允许你采用单文件或者多文件的模式,也允许你过滤掉你不想让用户选择的文件格式。 当文件在上传/下载过程中时,你也能获得进度报告。 这是Flash最常用的用途,因此,这里有个例子,关于从Flex应用到PHP后端是如何使用上传功能的。 这个例子希望你上传一个vCard(例子已经提供)到PHP,然后解析数据,在数据库中做记录,然后返回新纪录的具体内容到客户端显示。

fig4.jpg

这些例子的问题是,没有足够的时间进行每种可能性方法的代码迭代(尽管我非常困扰)。 不过在我的清单上仍然包含使用Zend框架的MVC组件来提供同一逻辑的交互展示,还有使用自定义socket服务器(当然是用PHP写的)的实时支持。 未来我希望有一些短暂的聊天和协作。 当我到达那个目标的时候我会再次更新代码。 在此期间,如果你想看到某个例子的功能,可以发表评论让我知道!

本页面已经被浏览4,718次。
CopyRight © 2007-2012 北京冠游时空数码技术有限公司, All Rights Reserved.
9RIA.com 天地会 京ICP备11007422号-2