[原创翻译]Zend框架和PRADO成功组合
时间:2006-06-30
来源:互联网
原文见:http://www.alexatnet.com/Blog/Index/2006-06-28/zend-framework-and-prado-successfull-cooperation
翻译:Sail Lee
Zend框架用户界面组件还没有开发出来,这迫使开发者要寻找其他基于控件的框架并尝试在项目中一起使用。只有少数好的框架能做到,其中完美的一个就是在Zend公司的PHP5编程比赛中脱颖而出的--PRADO框架,它是一个用PHP5编写的开放源码、基于组件和事件驱动的框架。它是自由的(BSD许可),你能在开放源码和私有应用中使用它。
最佳特性选择是几乎所有开发策略和在本文中我们打算使用它的关键。MVC模式和数据层类的实现是Zend框架的强项。PRADO的优势是应用程序页面的面向组件的设计。因此我们要做的就是使用Zend_Controller和Zend_Db来响应请求、创建数据层并以PRADO的组件创建部分页面。这些页面将在相应的控制器动作中被调用。
在一些下列段落中,我将为你演示如何基于PRADO的组件创建页面并从特定的Zend_Controller动作中运行它。页面组件会建立在数据层类之上,它以Zend_Db_Table类被创建。但你首先需要阅读多点关于在此论述的技术方面文章--一个好的关于Zend_Controller的指南,对于框架的初学者来说这是必需的入门读物。应用程序的数据层可以有多种创建方式,而在Zend_Db手册中推荐的方法只是简要地描述了一下,所以关于在规划数据层类时使用数据层的文章中,我写下了一些想法。实际上,我将使用在我的文章中被定义的类来提供数据给PRADO组件。
在这需要说明一下PRADO项目的设计。一个典型的PRADO项目由放置在“pages”目录中页面文件和放置在“runtime”目录中的应用状态文件组成。“assets”目录可供选择地被创建用于存放相关媒体文件,例如图片、flash动画等。
两个文件定义一个PRADO页面:定义何种组件与它们的设计外观在页面上的模板文件和带页面事件与相关类的页面代码文件。再稍微深入并阅读PRADO模板介绍,代码文件基本包含了一个页面类,它是TPage类的子类。你可以阅读《我的首个PRADO应用》来学习该项目架构的实例和演示基本PRADO概念的“Hello World!”样板页面。
那么现在关于本文你有了一些的了解(要了解更多的信息可参见PRADO的《快速入门教程》),我们可以集中在Zend框架行为的创建上来,它将例示并运行PRADO应用类。Zend推荐的项目架构定义了“view”目录用于应用程序的表示类,它规定了由Zend_View类来使用。而我们所需的是以PRADO页面来扩展该表示文件并把它们放到“application/view/prado”目录中去。和PRADO的《快速入门教程》提及的一样,我们需要为PRADO项目建立两个或更多的目录:“pages”和“runtime”。这样,该应用的目录结构如下:
代码:
application/controllers
/models
/views
/prado
/pages
/runtime
./application/views/prado/pages/Page1.page
代码:
<html><body>
<com:TForm>
<com:TButton Text="Click me" OnClick="buttonClicked" />
</com:TForm>
</body>
</html>
./application/views/prado/pages/Page1.php
<?php
class Page1 extends TPage
{
public function buttonClicked($sender,$param)
{
// $sender refers to the button component
$sender->Text = "Hello World!";
}
}
?>
代码:
<?php// the path to prado.php from the PRADO framework
require_once './prado/framework/prado.php';
// defines an action for "http://myhost/Prado" url.
class PradoController extends Zend_Controller_Action {
function indexAction() {
// "page" query string parameters specifies the page name
// that the PRADO framework should process.
$_GET['page'] = 'Page1';
// Create and start PRADO application.
// The constructor's argument defines path to folder
// with prado pages.
$app = new TApplication('./application/views/prado');
$app->run();
}
}
?>
如上,DataGrid是一个绑定数据的组件,这样我们需要提供数据给它。为此我们将使用用户数据层类,它在我的上一篇文章中被定义好了。下面的实例演示了如何放置DataGrid组件并展示来自“Users”表中的数据:
./application/views/prado/pages/Page1.page
代码:
<body><com:TDataGrid ID="Users">
</com:TDataGrid>
</body>
</html>
代码:
<?phpclass Page1 extends TPage
{
public function onInit($param)
{
if(!$this->IsPostBack)
{
$dbUsers = new DbUsers();
$users = array();
// copy data from rowset into the $users array
foreach ($dbUsers->fetchAll() as $dbUser) {
$users[] = array('id' => $dbUser->id,
'name' => $dbUser->login);
}
$this->Users->setDataSource($users);
$this->Users->dataBind();
}
}
}
?>
代码:
<?phprequire_once './prado/framework/prado.php';
// The database.php file contains the "DbUsers" class
require_once './application/models/database.php';
class PradoController extends Zend_Controller_Action {
function indexAction() {
$_GET['page'] = 'Page1';
$app = new TApplication('./application/views/prado');
$app->run();
}
}
?>
作者: sail 发布时间: 2006-06-30
作者: 帅的不能再输啦 发布时间: 2006-06-30
作者: 帅的不能再输啦 发布时间: 2006-06-30
作者: Lilicl 发布时间: 2006-06-30
作者: fankejing 发布时间: 2006-07-10
作者: kenus 发布时间: 2006-12-25
作者: cator 发布时间: 2006-12-25

作者: leehui1983 发布时间: 2006-12-26
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28