zend框架入门教程

合集下载

第8章 ZendFramework框架(理论)

第8章 ZendFramework框架(理论)
第八章 ZendFramework框架 框架
回顾
PHP操作MySQL PHP的文件操作以及目录操作 文件的上传以及上传文件的处理 PHP的基本功能已经全部介绍完毕
本章内容
ZendFramework框架的工作原理 ZendFramework的环境配置 Zend_Tool扩展的使用 ZendFramework框架的命名规则 使用ZendFramework框架实现最基本的数据库操作
测试Zend_Tool 2.5 测试Zend_Tool
3.开始我们的程序 3.开始我们的程序
INSERT INTO `books` (`id`, `author`, `bookname`) VALUES (1, '某人', '某年某月某时某刻'), (2, '小张', '小张在哪里'), (3, '英雄', '英雄不是传说'), (4, '哥', '哥是传说');
操作数据库的4个Action动作
3.8 视图和布局
ZendFramework的视图组件叫做Zend_View。Zend_View让我们可以 将页面和动作函数分离。
$view = new Zend_View(); $view->setScriptPath('/path/to/scripts'); echo $view->render('script.php');
编写控制器
用Zend_Tool的zf命令来增加控制器动作
zf create action add index zf create action edit index zf create action delete index

ZendFramework入门教程

ZendFramework入门教程

ZendFramework⼊门教程⼀、Zend Framework简介1. 什么是ZendFrameworkZend Framework(ZF or ZFW)是PHP的母公司Zend公司开发的⼀套PHP开发框架技术,它提供了⼀个优秀的、简单的综合开发环境,提供了很多可⽤的解决⽅案,可以⽤来建⽴⼀个稳定的、可升级的的Web应⽤。

所谓框架,是整个或者部分系统的可重⽤设计,它⾸先要提供⼀个可复⽤的应⽤参考架构,阐明整个设计、组件之间的依赖关系、责任分配和控制流程,也包含⼀些设计规范等等。

它提供了对⼀些通⽤问题的解决⽅案。

另外Zend Framework采⽤常见的MVC模型(在后续具体介绍),这样可以⽐较⽅便的达到关注点分离的⽬的,可以⽐较⽅便的建⽴基于MVC 架构的Web应⽤(典型的MVC Web架构还有Struct等等,它们原理都很类似)(PHP的类似框架还有很多如:yaf)2. 什么是LAMPLAMP是Linux+Apache+Mysql+Perl/PHP/Python的缩写,它们是⼀组经常⽤来搭建动态⽹站或者服务器的开源软件,本⾝都是各⾃独⽴的程序,但是因为常被放在⼀起使⽤,拥有了越来越⾼的兼容度,共同组成了⼀个强⼤的Web应⽤程序平台,由于都是开源软件,除了免费使⽤的诱惑,还有可以修改源码、⾃⼰进⾏控制等优点,LAMP是⼤多数⽹站开发者和很多⼤公司(如:Facebook和Baidu)的不⼆选择。

从⽹站的流量上来说,70%以上的访问流量是LAMP来提供的,可见LAMP是最强⼤的⽹站解决⽅案.(其它类似的⽅案如MS的.NET框架和Oracle的J2EE框架,三者同样强⼤)为什么要说LAMP呢,因为这些软件的组合强⼤到只要提到⼀个就必须要提到另外三个的地步,⽽在实验室⽹站的建设中,我们使⽤PHP,我们采取的当然也是LAMP的框架3. Zend Framework的安装XAMPP:Apache FriendsZend安装和使⽤另外需要注意的是,默认的Zend Framework使⽤MVC机制,它采⽤rewrite的⽅式进⾏跳转,这就需要在apache的配置⽂件中(⼀般是httpd.conf)修改加⼊允许rewrite的选项,需要的步骤是:1. 找到LoadModule rewrite_modulemodules/mod_rewrite.so将其前⾯的#去掉2. 在项⽬所在的⽬录下<Directory “projectPath”>中修改AllowOverride的值为All,Order allow,deny / Allow from all3. 在项⽬所在根⽬录下建⽴.htaccess⽂件,内容为RewriteEngine on #重写引擎打开RewriteRule!\.(js|ico|gif|jpg|png|css)$ index.php#制定除js,ico,gif,jpg,png,css以外的⽂件全都被重置到index.php,index.php为项⽬的⾸页(其实是前端转发控制页)简单的Zend Framework安装测试⽅法:创建⽂件test.php内容:<?phprequire_once(‘Zend/Date.php’);$date=new Zend_Date();echo $date>如果能正常输出则说明Zend安装⼤体正常。

zend框架入门教程

zend框架入门教程
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass 加载已经命名的类。它是把下划线转换成路径隔离符来实现的,并在 最后加上.php 后缀。这样,类 Zend_Controller_Front 将从 Zend/Controller/font.php 加载。如 果你在你的类库里使用相同的命名规则,就可以用 Zend_Loader::loadCass()来加载它们。我 们需要加载控制器类和路由类。 前端控制器用路由类来映射请求的 URL 到正确的 PHP 函数,然后显示页面。为了能使路由工 作,需要解决 URL 的哪一部分是指向 index.php 的路径,这样它就可以在那个点后面寻找 url 元素。这个由 Request 对象完成, 它在自动检测正确的 base URL 方面做的很出色,但如果它 对你的设置不工作,你可以用函数$frontController->setBaseUrl()来 override。 我们需要配置前端路由器,这样它就知道从哪个目录里找出我们的控制器。
Zend Framework 是这样设计的,所有的文件必须包含在 include path 中。我们也把我们的模 型目录包含在 include path 中,这样我们以后就能很容易加载我们的模型类。一开始,我们必 须 include Zend/Loader.php,这样我们就能访问 Zend_Loader 类,在 Zend_Loader 类中有静 态方法使我们能够加载其他 Zend Framework 类,例如:
Page 3 of 18
Zend_Loader::loadClass('Zend_Controller_Front'); // setup controller $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->setControllerDirectory('./application/controllers'); // run! $frontController->dispatch();

图解Zend_Studio使用

图解Zend_Studio使用

图解zend studio使用指南1.前言Zend Studio是一款以eclipse为基础开发的php集成开发环境,因此许多操作其实和eclipse是一致的,因此如果你使用过eclipse,那么可以不看或者快速浏览一下本文。

对于没有使用过eclipse的同学来说,可以花点时间看一下本文,希望能够对你以后的开发工作带来帮助。

2.安装zend studio可以从zend的官网下载到,下载完之后安装即可。

对于习惯用vi进行开发的同学,还可以安装vi插件,具体操作请看下面3.43.基本概念为了熟悉zend studio(eclipse)的操作环境,我们先来看一下zend studio打开以后界面:这个界面上其实分为几个部分,菜单栏和工具栏,跟普通软件没有什么区别,但是这里多出来一个Perspective的概念,而一个Perspective是由多个View和一个(或者没有)Editor区域组成的。

下面我们就来具体看一下。

3.1.PerspectivePerspective其实就是多个View和Editor的聚合,是一个为了方便某种具体的操作或者开发而事先设置好的,比如上图中就是一个PHP开发的perspective。

你可以注意到屏幕的右上角有一个区域,那里PHP是被选中的,如下图。

这里还展示了其他两个perspective,如果点击上图中最左边的图标,还可以看到许多其他的perspective。

我们看一下SVN Repository Exploring这个:3.2.View一个perspective里会有许多的view,这些view分别是一个小窗口,代表不同的功能,一般用来展示某些属性或者配置等。

比如上图中的SVN Exploring中,左侧有一个Explore的View,下面有三个View。

你可以根据自己的喜好在一个perspective里关闭或者打开新view。

关闭直接点击view右上图的x就可以了,而打开则需要在菜单的window->show view->other里进行选择,如下图:这种选择将重置之前perspective的默认view配置。

安装Zend框架和Zend

安装Zend框架和Zend

安装Zend框架和Zend_ToolZend Framework 配置要求∙PHP版本大于PHP 5.2.4。

∙Web 服务器支持重写,如Apache mod_rewrite。

∙服务器开启重写功能,如Apache http.conf 配置文件,需设置AllowOverride None 改为 AllowOverride All,以支持.htaccess 文件。

Zend Framework 安装这里以Ubuntu为例(其他Linux/Unix系统类似)。

首先到Zend 官网下载最新Zend Framework。

版本选择:Zend Framework 1.11.11 Minimal 即可,Zend Framework 1.11.11 Full 包括额外的库(/extras/library/ZendX/),以及一些demo等,有需要可下载Full版本)wget/releases/ZendFramework-1.11.11/ZendFramework-1.11.11-minimal. tar.gz下载完成可解压到想要的任意目录。

比如/usr/share/:sudo tar -zxvpf ZendFramework-1.11.11-minimal.tar.gz -C /usr/share添加Zend library解压以后,要设置确保解压文档中Zend Framework 的library 目录在php 配置的 inclue_path 变量的目录下。

大概有三种方法:1.执行 php -i | grep include_path 得知当前php的include_path路径,比如/usr/share/php,再将library目录下的Zend文件夹整个复制/移动到/usr/share/php/目录下。

2.修改php.ini 配置,将解压后的library目录路径添加到include_path变量中,(php.ini文件路径查询:php -i | grep php.ini;注意ubuntu 11.04是将用于cli和Apache的 php.ini 配置文件分开的,cli是/etc/php5/cli/php.ini,Apache是/etc/php5/apache2/php.ini)。

Zend_Layout入门指南

Zend_Layout入门指南

介绍当使用Zend Framework MVC层创建web站点的时候,你的视图脚本通常是与请求动作(requested action)相关的HTML片段。

比如,如果你有动作“/user/list”,你可以创建一个遍历用户并呈现一个无序表的视图脚本:1<h2>Users</h2>2<ul>3<?php if (!count($this->users)): ?>4 <li>No users found</li>5<?php else: ?>6<?php foreach($this->users as$user): ?>7 <li>8<?php echo$this->escape($user->fullname)?> 9(<?php echo$this->escape($user->email) ?>)10 </li>11<?php endforeach?>12<?php endif?>13</ul>因为这仅仅是一个HTML片段,它不是一个有效的页面;它缺少了DOCTYPE声明、开放的HTML和body标签。

所以,问题是,这些将在哪里被创建?在Zend Framework的早期版本中,开发者经常创建含有这些人工标记的“header”和“footer”视图脚本,然后在每个视图脚本中渲染他们。

虽然这套方法能够工作,但它也为以后重构造成困难,或者通过调用多个行为去建立复合的内容两步视图设计模式回答了许多现在的问题。

在这个模式里,“application”视图首先被创建,然后将其中注入“page”视图,随后“page”视图提交给客户端。

Page视图可看作是你的全站模板或者布局,可以在各个页面之间使用共同的元素在Zend Framework中,Zend_Layout实现了两步视图模式使用 Zend_LayoutZend_Layout基本用法相当琐碎的(trivial)。

zendframework官方入门手册

zendframework官方入门手册

为了创建项目,你必须首先下载并解压缩Zend框架。

相处了一个完整的Zend框架的PHP堆栈最简单的方法是通过安装»Zend服务器。

Zend服务器有本地安装的Mac OSX,Windows中的Fedora Core和Ubuntu,以及作为一个普遍的兼容大多数Linux发行版的安装包。

框架文件后,您已经安装了Zend服务器,可根据发现的/ usr /本地/ ZEND / Mac OSX和Linux上的份额/ ZendFramework,和C :\ Program Files文件\的Zend \ ZendServer \共享\ ZendFramework Windows上。

已配置的include_path将包括Zend框架。

或者,您可以»下载最新版本的Zend框架和提取的内容,使你这样做了说明。

或者,您可以将路径添加到库/归档文件的子目录到你的php.ini 的设置。

这就是它!Zend框架正在安装,并准备使用。

注:ZF在您的Zend Framework安装的命令行工具是一个bin /子目录中,包含脚本zf.sh和zf.bat,分别为基于UNIX和基于Windows的用户。

使这个脚本的绝对路径的说明。

无论你看到的命令引用ZF,请替换脚本的绝对路径。

在类Unix系统,你可能想使用shell 的别名功能:如果你有问题设立的ZF命令行工具,请参阅到的别名zf.sh =路径/ / ZendFramework / BIN / zf.sh。

手册。

打开一个终端(在Windows中,开始- >运行,然后使用CMD)。

导航到一个目录,您想启动一个项目。

然后,使用相应的脚本路径,并执行下列之一:1.%ZF创建项目快速启动运行此命令将创建您的网站的基本结构,包括你最初的控制器和视图。

树看起来如下:1.快速入门2.| - 应用3.| | - Bootstrap.php4.| | - CONFIGS5.| |` - 的application.ini6.| | - 控制器7.| | | - ErrorController.php8.| |` - IndexController.php9.| | - 模型10.|` - 意见11.| | - 佣工12.|` - 脚本13.| | - 错误14.| |` - error.phtml15.|` - 指数16.|` - index.phtml17.| - 库18.| - 公共19.| | - htaccess的。

ZEND FRAMEWORK中的简单工厂模式 图文

ZEND FRAMEWORK中的简单工厂模式 图文

Zend Framework中的简单工厂模式图文某天又然后想到好久没复习设计模式了。

综合一下,复习一个设计模式之后在ZF中找一下使用这模式的源码吧,不读所有源码,读读比较”高级”的部分吧,要说模式,暂时不知道是不是所有模式ZF里面都有,但是应该有足够的模式够我最近看了,在说可以找找其他开源的软件来找模式前段时间用来ZF,把他当黑盒感觉不是很好,一直有看其源码的冲动,但是。

如果一点一点点看的话,挑战确实有些大了。

某天又然后想到好久没复习设计模式了。

综合一下,复习一个设计模式之后在ZF中找一下使用这模式的源码吧,不读所有源码,读读比较”高级”的部分吧,要说模式,暂时不知道是不是所有模式ZF里面都有,但是应该有足够的模式够我最近看了,在说可以找找其他开源的软件来找模式。

这段时间被各种笔试神马乱七八糟的把生活搞得稍微有点乱,但是不管怎样,复习还是必须的吧。

再说一下ZF吧,ZF一个好处就是各个component比较独立,component之间没有过多的依赖,这样一来,为使用者提供了方便,当然也为我这样无聊且懒的想看源码的人提供了方便。

今天看看简单工厂,ZF里面不缺模式,更不缺工厂模式,大名鼎鼎的的Zend_Db就毫不吝啬的使用简单工厂,再ctrl+h(zend studio下)一下会发现factory特别多,如果没猜错应该大多应该也是简单工厂。

由于Zend_Db最常用,我也就自然的会比较想看一下他的实现。

在查看源码之前先复习一下怎么用Zend_Db和简单工厂(这里是一个stack,先复习简单工厂)。

复习简单工厂模式用类图回忆一下,简单工厂类图:借用《研磨设计模式》作者的一张图,可以看到Client通过factory来获取对象,通过Api结构来调用。

用factory把具体的Api的创建隐藏起来。

而其他所有使用者在使用时,只需要知道用facto ry创建,通过Api结构调用即可,简单复习完成。

看到类图应该能想起简单工厂了,因为他本身确实很简单。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

和 Zend Framework一起成长By Rob Allen, Document Revision 1.3.0Copyright © 2006, 2007翻译: Jason Qi, 本教程打算介绍用Zend Framework写一个基本的数据库驱动的应用程序。

注:本教程已经在Z end Framework Version 0.9和0.9.1上测试过。

它非常有希望和以后的版本一起工作,但很确定,它不和0.9以前的版本工作。

(谁还希望用0.9以前的版本?译者注)版的警示::如果你已经下载了Zend Framework的0.9版,那么你必须编辑对于0.9版的警示library/Zend/Db/Table/Row/Abstract.php 文件在第一行的开始加上“<”(Model-View-Controller )架构模型-视图-控制器控制器(下面是传统的构建PHP应用程序的方法:<?phpinclude "common-libs.php";include "config.php";mysql_connect($hostname, $username, $password);mysql_select_db($database);?><?php include "header.php"; ?><h1>Home Page</h1><?php$sql = "SELECT * FROM news";$result = mysql_query($sql);?><table><?phpwhile ($row = mysql_fetch_assoc($result)) {?><tr><td><?php echo $row['date_created']; ?></td><td><?php echo $row['title']; ?></td></tr><?php}?></table><?php include "footer.php"; ?>随着时间的推移,当客户不断地有新的需求产生,这种分布于不同地方的基于代码的应用就变得不可维护。

一种改善应用程序可维护性的方法就是把代码分离成截然不同的三个部分(并且通常分离成不同的文件):模型模型是处理被显示的数据的程序。

在上面的例子中,它就是”news”的概念。

这样,模型一般来说关心”business”逻辑并从数据库中读取和存储数据。

视图视图包括一些关于显示给用户的程序,通常是HTML控制器控制器同模型和视图配合在一起,把正确的数据显示在合适的页面上。

The Zend Framework uses the Model-View-Controller (MVC) architecture. This is used to separate out the different parts of your application to make development and maintenance easier.Zend Framework 使用模型-视图-控制器(Model-View-Controller (MVC))架构。

这个用来把你的程序分离成不同部分使得开发和维护变得容易。

需求运行Zend Framework 需要:• PHP 5.1.4 (或更高)• Web 服务器支持mod_rewrite 功能. 本教程采用Apache。

获取Zend Framework从这里/download下载Zend Framework,有两种格式.zip或者.tar.gz。

当前的版本是0.9.1。

对于本教程,你必须使用0.9和以上的版本。

目录结构虽然Zend Framework 没有强求使用一个标准的目录结构,但它的手册还是推荐了一个通用的目录结构。

这个目录结构假设你完全控制Apache的配置,然而我们想使它更容易一点,所以做了一点修正。

建立一个根目录叫做zf-tutorial。

这个意味着指向程序的URL 将会是h ttp://localhost/zf-tutorial。

建立如下的子目录,这些目录将存放程序所需要的文件:zf-tutorial//application/controllers/models/views/filters/helpers/scripts/library/public/images/scripts/styles正如你所看到的,我们已经把我们的程序中的模型、视图和控制器的文件分离到不同的子目录中。

支持的图像,脚本和CSS文件被存放在public目录下的不同子目录中。

下载的Zend Framework文件放在library目录下。

如果我们还需要其他库文件,都可以放在这里。

把ZendFramwork-0.9.1-Beta.zip 解压到一个临时目录。

所有的文件都包含在一个叫做ZendFramework-0.9.1-Beta 的目录。

把ZendFramework-0.9.1-Beta/library 中的文件拷贝到zf-tutorial/library 。

在这个目录下,有一个子目录叫做Zend 。

启动文件启动文件((Bootstrapping )Zend Framework 的控制器,Zend_Controller ,被设计支持使用clean urls 的网站。

为实现这个目的,所有的请求需要通过单一的index.php 文件,这就是所知的启动文件(bootstrapper )。

这给我们提供了程序中所有页面的中心点并确保运行环境配置正确。

我们用.htaccess 文件来实现这个目的,.htaccess 在zf-tutorial 的根目录中,内容如下:zf-tutorial/.htaccessRewriteEngine onRewriteRule .* index.phpphp_flag magic_quotes_gpc offphp_flag register_globals offRewriteRule 非常简单并可以翻译为“对任何url, 重定向到index.php ”。

为安全和稳定起见,我们也在PHP ini 中做一些设置。

虽然这些都已经设置正确,我们还是要确认一下!注意在.htaccess 中的php_flag 只工作于mod_php 下。

如果你使用CGI/FastCGI,就需要确保php.ini 配置正确。

然而,对于图像,JavaScript 和CSS 文件的请求不应该重定向到启动文件,把这些文件放到public 目录下,我们很容易地通过另一个.htaccess 文件来配置Apache 。

这个.htaccess 文件在z f-tutorial/public 下:zf-tutorial/public/.htaccessRewriteEngine off虽然我们当前的rewrite rules 不需要太严格,但我们还是在application 和library 目录下添加一些.htaccess 文件用来保护我们的程序:zf-tutorial/application/.htaccessdeny from allzf-tutorial/library/.htaccessdeny from all注意在Apache 下设置.htaccess 文件,httpd.conf 中的AllowOverride 必须设置为All 。

这些设置多个.htaccess 文件的主意来自于 Jayson Minard 的文章 “Blueprint for PHP Applications: Bootstrapping (Part 2) ”. 我建议大家去读读整个系列文章。

启动文件启动文件::index.phpzf-tutorial/index.php 是我们的启动文件,我们从下面的代码开始:zf-tutorial/index.php<?phperror_reporting(E_ALL|E_STRICT);date_default_timezone_set('Europe/London');set_include_path('.' . PATH_SEPARATOR . './library'. PATH_SEPARATOR . './application/models/'. PATH_SEPARATOR . get_include_path());include "Zend/Loader.php";Zend_Loader::loadClass('Zend_Controller_Front');// setup controller$frontController = Zend_Controller_Front::getInstance();$frontController->throwExceptions(true);$frontController->setControllerDirectory('./application/controllers');// run!$frontController->dispatch();注意我们没有在文件的结尾放?>,因为它不是必须的并且有个好处是:我们可以防止当多余的whitespace发生在?>后面出现难以调试的错误。

让我们过一遍这个文件error_reporting(E_ALL|E_STRICT);date_default_timezone_set('Europe/London');第几行确保我们能看到我们犯的错误(假定在php.ini中的display_errors设置为on),PHP5.1+要求设置当前时区。

显然,你应该选择你自己的时区。

set_include_path('.' . PATH_SEPARATOR . './library'. PATH_SEPARATOR . './application/models/'. PATH_SEPARATOR . get_include_path());include "Zend/Loader.php";Zend Framework 是这样设计的,所有的文件必须包含在include path中。

相关文档
最新文档