利用Flash Builder for PHP简化Flex和PHP开发(二)

来源:互联网 发布:观复博物馆淘宝 编辑:程序博客网 时间:2024/05/05 19:47

创建PHP服务

为了简化,你可以使用一个基本的PHP类,它具有硬编码的数据。利用这一方法,你可以在你的代码中复制和粘贴该类,现在你可以开始编程。当然,在真正的应用程序中,通常你具有各种连接到数据库的PHP类。在使用 MySQL和 PHP的情形下,使用服务的步骤和原则保持相同。

下面是 AuthorsService.php 类的代码:

<?php

class AuthorsService {

    

    public function getData() {

        //in a real world application you would use a database 

        //and return the result set for example

        $ret = array();

        $ret[] = array('id'=>1, 'firstname' => 'Dantes', 'lastname' => 'Aligherie');

        $ret[] = array('id'=>2, 'firstname' => 'Niccolo', 'lastname' => 'Machiavelli');

        $ret[] = array('id'=>3, 'firstname' => 'William', 'lastname' => 'Shakespeare');

        $ret[] = array('id'=>4, 'firstname' => 'Kevin', 'lastname' => 'Hoyt');

        $ret[] = array('id'=>5, 'firstname' => 'Paul', 'lastname' => 'Trani');

        $ret[] = array('id'=>6, 'firstname' => 'Renaun', 'lastname' => 'Erickson');

        $ret[] = array('id'=>7, 'firstname' => 'Ryan', 'lastname' => 'Stewart');

        $ret[] = array('id'=>8, 'firstname' => 'Mark', 'lastname' => 'Doherty');

        $ret[] = array('id'=>9, 'firstname' => 'Mihai', 'lastname' => 'Corlan');

        $ret[] = array('id'=>10, 'firstname' => 'Terry', 'lastname' => 'Ryan');

        return $ret;

    }

    //update the entry 

    public function updateData($author) {

        return $author;

    }

    

    //add a new entry

    public function addData($author) {

        return $author;

    }

    

    //delete the entry

    public function deleteData($author) {

        return $author;

    }

    

}

?>

PHP服务能够实现读取(Read )操作。当然,在真正的应用程序中,你还需要实现其它CRUD 操作(创建/更新/删除Create/Update/Delete) 

按照下列步骤建立PHP服务:

1. PHP-project/src/ 文件夹中,创建一个名称为 AuthorsService.php 的新文件(参见图11)。

2. 打开该文件并且将上面代码复制到该文件中。

3. 保存该文件


图 11.AuthorsService.php文件

Flash Builder


建立服务

现在你已经有了一个PHP服务的实体模型,你可以创建相应的Flex代码。

1. 返回编辑器中的 Main.mxml 文件,并且点击在Data/Services视图中的Connect to Data/Service 链接(参见图12)。(如果你看不见该视图,则选择Window > Show View,然后选中Data/Services)。

: 你也可以通过右击PHP服务文件并且选中Create PHP Service For Flex,启动该服务向导。


图 12.Data/Services 视图 

Flash Builder for PHP 能够帮助你内视一个 PHP 服务,并且生成一个包围该服务的 Flex 包装页面,这样你可以在相应的Flex 代码中使用它。
2. Service 向导启动时,选中 PHP By Zend(参见图13)然后点击 Next。该向导也支持利用 PHP/ColdFusion/JavaWeb Services和 REST Style ServicesRemoting功能。


图 13.Flash Builder Service向导 

3. 为了配置 Zend Studio PHP服务,点击Browse(参见图14)并且从src 文件夹的PHP-project项目中选中AuthorsService.php 文件(这是你希望使用的服务),然后点击OK


图 14.选中AuthorsService.php文件 

该服务名称和包将被自动填入(参见图15)。你可以随意对它们进行更改。

4.点击Finish按钮。


图 15.自动设置Service的详细信息(名称和包)

Flash Builder for PHP 可以在Flex项目中创建服务 wrapper 类并且在Data/Services 视图中显示其方法(参见图16)。


图 16.AuthorsService ActionScript的服务包装页面 

配置返回类型

AuthorsService PHP 类的getData() 方法能够返回关联数组的一个数组。但现在 ActionScript包装页面返回的是匿名Object的一个数组。下一步是定义返回数据的一个自定义类型。为什么你应该小心对待这一步? 因为当使用Remoting技术时这是一个最佳方法的问题。当你为你的服务定义自定义类型时,Flash Builder 能够帮助你完成代码编写以及编译时间错误检查。例如,在实际的应用程序中,deleteData()方法需要一个类型 VOAutho的参数。如果你传递一些其它对象,则编译器将指示该错误。

注:如果你的 PHP 服务使用类型错误(即如果你具有定义的 PHP实体和服务方法,则返回强类型数据而不是返回匿名对象),则你不需要使用下列步骤配置返回类型。否则,当你导入PHP服务时,你需要定义返回类型。

1. 在 Data/Services 视图中, 右击getData() 方法,然后选中 Configure Return Type

2. 当被提示如何配置返回类型时,选中Auto-detect The Return Type From Sample Data,然后点击Next(参见图17)。


图 17.选中auto-detect 

在下一屏幕中,你提供 这一自定义类型的名称(例如输入VOAuthor),然后检查属性类型。在本例中,PHP类返回关联数组的一个数组,每个数组带有三个键(idlastnamefirstname),而Flash Builder for PHP 能够自动检测出它们(参见图18)。

3. 点击Finish按钮。


图 18.配置返回类型 

在实际的应用程序中,你还需要使用相同类型进行删除、更新和插入操作(参见图19)。对于这些操作,你需要通过选中现有数据类型VOAuthor来定义输入和返回类型。


图 19.配置使用数据的自定义类型VOAuthorAuthorsService Flex 包装页面 

使用服务

下面,我将向你介绍如何使用该包装页面的getData()方法及利用方法返回的数据填写一个数据网格。

1. 切换到Main.mxml 文件的Design 视图。

2. 从Components视图(在左下方)将 Data Grid 组件拖拽到设计区域(参见图20)。


图 20.将一个数据网格添加到Flex 应用程序中 

3. 将getData() 方法从 Data/Services视图中拖拽到数据网格中。

4. 当被提示是否希望利用与新服务操作的绑定替换该绑定时,点击 OK

5. 在 Bind To Data 对话框中,核查你希望用作数据源的服务名称和操作(参见图21),然后点击OK


图 21.确认操作和服务名称

6.保存该文件(选中 File > Save)。

如需运行应用程序,切回到Source 视图,右击编辑器中的文件,然后选中Run As > Web (PHP) Application(参见图22)。


图 22.运行Flex应用程序 

这将启动Flex应用程序,它可以使用你创建项目时设立的配置(root URL和端口地址)。Flex 应用程序能够显示来自数据网格组件的PHP服务的数据(参见图23)。


图 23.在浏览器中运行Flex应用程序

为了更深入地了解如何使用Flex服务包装页面以及相应的操作是如何与数据网格进行绑定的,请花一点时间研究一下通过将getData()拖拽到数据网格生成的代码。

调试FlexPHP代码 

Flash Builder for PHP问世之前,同时调试 Flex和 PHP 代码是件相当复杂的任务。现在,也不是非常简单。

为什么说拥有一个良好的调试工作流程非常重要? 因为对任何丰富的客户端(FlexAjax)来说,导致你的应用程序出现故障的原因可能来自服务器侧代码、客户端侧代码或网络。当你能够以端到端的方式调试代码时-从客户端侧进行调用到执行服务器侧代码,然后再返回到在客户端侧接收结果-最后你可以更有效地确定问题的根源。

按照下列步骤调试你的Flex PHP项目:

1. 在Flex和 PHP文件中你希望调试程序暂停的位置设置断点。例如,在 Main.mxml文件中的 dataGrid_creationCompleteHandler() 函数的位置设置一个断点(大约在第14行)并且在 AuthorsService.php 文件中的 getData() 方法的位置设置一个断点 (第7行)。(右击编辑器左边的行号并且选中Toggle Breakpoint,即可设置一个断点。) 

2. 右击Main.mxml 文件并且选中 Debug As > Web (PHP) Application 以便自动为这些项目建立一个调试配置,然后以调试模式启动项目。

加载该项目并且执行该Flex代码至 dataGrid_creationCompleteHandler() 方法被调用的位置。当你第一次到达断点时,你将被提示确认相应的透视开关。

3. 选中Remember My Decision 并且点击 Yes (参见图24)。

相应的Debug透视图将显示出来(而不是你目前正在使用的 Flex透视图)。这一透视图同时显示了Flex和 PHP调试器信息。


图 24.确认切换至 Debug 透视图 

在 Flex调试器中,你可以内视变量和应用程序状态,检查堆栈跟踪以及逐行继续你使用Flex调试器习惯进行的任何操作(参见图25)。


图 25.运行状态的Flex 调试器

4. 选中Run > Resume 继续运行。

Flex 应用程序将调用PHP-project 项目中的 gateway.php 文件, 该项目能够在AuthorsService.php中执行getData() 方法。当应用程序运行到你的第二个断点(在 PHP 侧的断点)时,PHP 调试器将被调用。

5. 如果显示的对话框要求你输入各种 Zend Framework 源文件的位置(参见图26),选中底部的选项并且点击OK


图 26.定义Zend Framework 文件的源路径 

在处理客户端侧的代码时,你可以内视变量并且逐行继续运行应用程序(参见图27)。

在你处理完PHP调试器之后,按下F8或点击Resume按钮以便恢复正常执行状态。


图 27.运行状态的PHP调试器 

下一步阅读方向

本文给出了如何使用Flash Builder for PHP 简化 Flex和 PHP 开发过程的简介。如需了解关于Flex和 PHP 开发过程的信息,我建议你访问我的 博客 和Adobe Developer Connection 网页 


本文基于Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License协议发布。