位置: 编程技术 - 正文

Zend Framework开发入门经典教程(framework开发教程)

编辑:rootadmin

推荐整理分享Zend Framework开发入门经典教程(framework开发教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:framework入门,framework在哪里,framework入门,zend framework手册,framework在哪里,zend framework手册,zend framework手册,framework怎么打开,内容如对您有帮助,希望把文章链接给更多的朋友!

本文讲述了Zend Framework开发入门相关知识点。分享给大家供大家参考,具体如下:

Zend Framework发布了!虽然仍处于开发初期,这个教程仍突出讲解目前几个最好的功能,并指导你完成一个简单程序的构建。

Zend最早在社区里发布了ZF。基于同样的想法,这个教程写来用于展示ZF现有的功能。由于这个教程是在线发布,我将在ZF变化时对其进行更新,以便尽可能有效。

要求

Zend Framework要求PHP5。为了更好利用本教程的代码,你还需要Apache网页服务器。因为示范程序(一个新闻管理系统)用到了mod_rewrite。

这个教程的代码可以自由下载,所以你可以自己试一下。你可以从Brain Buld的网站下载到代码: views/ controllers/www/ .htaccess index.phplib/

www目录是文档根目录,controllers和views目录是以后会用到的空目录,而lib目录来自你下载的预览版。

开始

我要介绍的第一个组件是Zend_Controller。从很多方面看,它为你开发的程序提供了基础,同时也部分决定了Zend Framework不只是个组件的集合。但是,你在用之前需要将所有的得到的请求都放到一个简单的PHP脚本。本教程用的是mod_rewrite。

用mod_rewrite自身是一种艺术,但幸运的是,这个特殊的任务特别简单。如果你对mod_rewrite或Apache的一般配置不熟悉,在文档根目录下创建一个.htaccess文件,并添加以下内容:

提示: Zend_Controller的一个TODO项目就是取消对mod_rewrite的依赖。为了提供一个预览版的范例,本教程用了mod_rewrite。

如果你直接把这些内容添加到httpd.conf,你必须重启网页服务器。但如果你用.htaccess文件,则什么都不必做。你可以放一些具体的文本到index.php并访问任意路径如/foo/bar做一下快速测试。如你的域名为example.org,则访问

Zend_Controller

使用这个controller非常直观。事实上,我写本教程时并没有用到它丰富的文档。

提示:文档目前已经可以在 controller。为了理解它是怎么工作的,请把下列代码放在你的index.php文件:

如果你更喜欢对象链结,可以用以下代码代替:

现在如果你访问/foo/bar,会有错误发生。没错!它让你知道发生了什么事。主要的问题是找不到IndexController.php文件。

在你创建这个文件之前,应先理解一下ZF想让你怎样组织这些事情。ZF把访问请求给拆分开来。假如访问的是/foo/bar,则foo是controller,而bar是action。它们的默认值都是index.

如果foo是controller,ZF就会去查找controllers目录下的FooController.php文件。因为这个文件不存在,ZF就退回到IndexController.php。结果都没有找到,就报错了。

接下来,在controllers目录创建IndexController.php文件(可以用setControllerDirectory()设置):

就如刚才说明的,IndexController类处理来自index controller或controller不存在的请求。indexAction()方法处理action为index的访问。要记住的是index是controller和action的默认值。如果你访问/,/index或/index/index,indexAction()方法就会被执行。 (最后面的斜杠并不会改变这个行为。) 而访问其他任何资源只会导致出错。

在继续做之前,还要在IndexController加上另外一个有用的类方法。不管什么时候访问一个不存在的控制器,都要调用noRouteAction()类方法。例如,在FooController.php不存在的条件下,访问/foo/bar就会执行noRouteAction()。但是访问/index/foo仍会出错,因为foo是action,而不是controller.

将noRouteAction()添加到IndexController.php:

例子中使用$this->_redirect('/')来描述执行noRouteAction()时,可能发生的行为。这会将对不存在controllers的访问重定向到根文档(首页)。

现在创建FooController.php:

如果你再次访问/foo/bar,你会发现执行了barAction(),因为bar是action。现在你不只支持了友好的URL,还可以只用几行代码就做得这么有条理。酷吧!你也可以创建一个__call()类方法来处理像/foo/baz这样未定义的action。

现在你只要几行代码就可以很好地处理用户的访问了,准备好继续。

Zend_View

Zend_View是一个用来帮助你组织好你的view逻辑的类。这对于模板-系统是不可知的,为了简单起见,本教程不使用模板。如果你喜欢的话,不妨用一下。

记住,现在所有的访问都是由front controller进行处理。因此应用框架已经存在了,另外也必须遵守它。为了展示Zend_View的一个基本应用,将IndexController.php修改如下:

在views目录创建example.php文件:

现在,如果你访问自己网站的根资源,你会看到example.php的内容。这仍没什么用,但你要清楚你要在以一种结构和组织非常清楚的方式在开发网络应用。

为了让Zend_View的应用更清楚一点,,修改你的模板(example.php)包含以下内容:

现在已经添加了两个功能。$this->escape()类方法用于所有的输出。即使你自己创建输出,就像这个例子一样。避开所有输出也是一个很好的习惯,它可以在默认情况下帮助你防止跨站脚本攻击(XSS)。

$this->title和$this->body属性用来展示动态数据。这些也可以在controller中定义,所以我们修改IndexController.php以指定它们:

现在你再次访问根目录,应该就可以看到模板所使用的这些值了。因为你在模板中使用的$this就是在Zend_View范围内所执行的实例。

要记住example.php只是一个普通的PHP脚本,所以你完全可以做你想做的。只是应努力只在要求显示数据时才使用模板。你的controller (controller分发的模块)应处理你全部的业务逻辑。

在继续之前,我想做最后一个关于Zend_View的提示。在controller的每个类方法内初始化$view对象需要额外输入一些内容,而我们的主要目标是让快速开发网络应用更简单。如果所有模板都放在一个目录下,是否要在每个例子中都调用setScriptPath()也存在争议。

幸运的是,Zend类包含了一个寄存器来帮助减少工作量。你可以用register()方法把你的$view对象存储在寄存器:

Zend Framework开发入门经典教程(framework开发教程)

用registry()方法进行检索:

基于这点,本教程使用寄存器。

Zend_InputFilter

本教程讨论的最后一个组件是Zend_InputFilter。这个类提供了一种简单而有效的输入过滤方法。你可以通过提供一组待过滤数据来进行初始化。

这会将($_POST)设置为NULL,所以就不能直接进入了。Zend_InputFilter提供了一个简单、集中的根据特定规则过滤数据的类方法集。例如,你可以用getAlpha()来获取$_POST['name']中的字母:

每一个类方法的参数都是对应要过滤的元素的关键词。对象(例子中的$filterPost)可以保护数据不被篡改,并能更好地控制对数据的操作及一致性。因此,当你操纵输入数据,应始终使用Zend_InputFilter。

提示:Zend_Filter提供与Zend_InputFilter方法一样的静态方法。

构建新闻管理系统

虽然预览版提供了许多组件(甚至许多已经被开发),我们已经讨论了构建一个简单程序所需要的全部组件。在这里,你会对ZF的基本结构和设计有更清楚的理解。

每个人开发的程序都会有所不同,而Zend Framework试图包容这些差异。同样,这个教程是根据我的喜好写的,请根据自己的偏好自行调整。

当我开发程序时,我会先做界面。这并不意味着我把时间都花在标签、样式表和图片上,而是我从一个用户的角度去考虑问题。因此我把程序看成是页面的集合,每一页都是一个独立的网址。这个新闻系统就是由以下网址组成的:

//add/news/add/comment/admin/admin/approve/view/{id}

你可以直接把这些网址和controller联系起来。IndexController列出新闻,AddController添加新闻和评论,AdminController处理一些如批准新闻之类的管理,ViewController特定新闻和对应评论的显示。

如果你的FooController.php还在,把它删除。修改IndexController.php,为业务逻辑以添加相应的action和一些注释:

接下来,创建AddController.php文件:

记住AddController的indexAction()方法不能调用。当访问/add时会执行这个类方法。因为用户可以手工访问这个网址,这是有可能的,所以你要把用户重定向到主页、显示错误或你认为合适的行为。

接下来,创建AdminController.php文件:

最后,创建ViewController.php文件:

和AddController一样,index()方法不能调用,所以你可以使用你认为合适的action。ViewController和其它的有点不同,因为你不知道什么才是有效的action。为了支持像/view/这样的网址,你要使用__call()来支持动态action。

数据库操作

因为Zend Framework的数据库组件还不稳定,而我希望这个演示可以做得简单一点。我使用了一个简单的类,用SQLite进行新闻条目和评论的存储和查询。

(你可以用自己的解决方案随意替换这个类。这里只是为你提供一个完整示例的介绍,并非建议要这么实现。)

这个类的构造器需要SQLite数据库的完整路径和文件名,你必须自己进行创建。

你只需要做一次,以后直接给出Database类构造器的完整路径和文件名即可:

整合

为了进行整合,在lib目录下创建Database.php,loadClass()就可以找到它。你的index.php文件现在就会初始化$view和$db并存储到寄存器。你也可以创建__autoload()函数自动加载你所需要的类:

接下来,在views目录创建一些简单的模板。index.php可以用来显示index视图:

view.php模板可以用来显示选定的新闻条目:

最后,admin.php模板可以用来批准新闻条目:

提示:为了保持简单,这个表单用密码作为验证机制。

使用到模板的地方,你只需要把注释替换成几行代码。如IndexController.php就变成下面这样:

因为条理比较清楚,这个程序首页的整个业务逻辑只有四行代码。AddController.php更复杂一点,它需要更多的代码:

因为用户在提交表单后被重定向,这个controller不需要视图。

在AdminController.php,你要处理显示管理界面和批准新闻两个action:

最后是ViewController.php:

虽然很简单,但我们还是提供了一个功能较全的新闻和评论程序。最好的地方是由于有较好的设计,增加功能变得很简单。而且随着Zend Framework越来越成熟,只会变得更好。

更多信息

这个教程只是讨论了ZF表面的一些功能,但现在也有一些其它的资源可供参考。在 Allen在 Framework的经验,而Richard Thomas也在 Framework的新论坛: Framework显示了承诺,加入的每个人都是想继续完善它。

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

SSO单点登录的PHP实现方法(Laravel框架) Laravel是一套简洁、优雅的PHPWeb开发框架(PHPWebFramework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代

Zend Framework教程之Zend_Db_Table表关联实例详解 本文实例讲述了ZendFramework中Zend_Db_Table表关联用法。分享给大家供大家参考,具体如下:介绍:在RDBMS中,表之间有着各种关系,有一多对应,多多对应

PHP getallheaders无法获取自定义头(headers)的问题 在客户端请求的时候增加了自定义的http头,请求如下所示:自定义http请求头var_dump(getallheaders);一开始通过getallheaders参数获取,但是发现在nginx部署的服

标签: framework开发教程

本文链接地址:https://www.jiuchutong.com/biancheng/293163.html 转载请保留说明!

上一篇:php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法

下一篇:SSO单点登录的PHP实现方法(Laravel框架)(oauth2 sso单点登录)

  • 所得税减免会计分录
  • 专票上不小心印上字了,怎么去除
  • 公司付给中间人居间费用如何纳税
  • 补缴以前年度附加税
  • 幼儿园收费怎么说
  • 库存现金的使用范围
  • 分公司独立核算企业所得税缴纳
  • 业务招待产生的快递费
  • 工资结算汇总表会计科目
  • 企业与政府土地合作开发模式
  • 车辆购置附加税证丢了能过户吗
  • 厂房推倒重建房产税
  • 实施计划成本存货发生毁损的会计处理怎么做?
  • 应付职工薪酬要结转吗
  • 工业结转成本方法有哪些?
  • 海关缴款书认证不符
  • 购买垃圾袋的会计分录
  • 企业自行建造的固定资产
  • 增值税纳税义务人
  • 建筑工程预收款开票会计分录
  • 农产品加计扣除政策2023最新
  • 银行承兑贴现到哪里去了
  • 无形资产减值损失后能不能转回
  • 小规模纳税人出售使用过固定资产
  • 今年交去年的工会经费账务处理?
  • 收回已核销的坏账并入账是什么意思
  • windows 11预览版
  • 给客户买的礼品怎么报销
  • qclean.exe - qclean是什么进程 有什么用
  • 前端大屏适配几寸显示器
  • 未开票收入开票
  • 税务稽查的进项税怎么处理
  • 职工教育经费可以有余额吗?
  • php获取指定日期的星期几的方法是
  • 智慧工厂协同管控下载
  • php获取前一天的时间
  • 房地产企业出售房产增值税
  • 图文详解汽车坐垫安装方法
  • pygame编程
  • 织梦如何给栏目增加缩略图
  • sqlserver2016维护计划
  • mysql 中文排序是什么规则
  • 股东退股如何清算表格
  • var/lib/mysql
  • 员工多交个税企业就少交所得税吗?
  • 赠品当商品卖
  • 子公司注销债务如何处理
  • 公转私钱最好的方法
  • 申报个税劳务报酬按20%扣
  • 日常费用报销流程是什么样的?
  • java调用jni
  • windows xp开机按f12是什么操作
  • win7不能复制文件怎么办
  • centos建站教程
  • win10 sp3
  • mac命令行指令
  • linux系统加载网卡驱动
  • 在linux操作系统中把外部设备当作文件统一管理
  • js date类型
  • js内置对象方法有哪些
  • python中随机数的用法
  • Nodejs+Socket.io实现通讯实例代码
  • 你可能不知道的湖北
  • unityplayer安卓
  • shell遍历sql查询结果
  • pygame 安装
  • android课程心得体会
  • 怎么利用python爬虫爬数据
  • 命令最常用的类型有
  • js的实现原理
  • jquery怎么给文本框赋值
  • Unity3d C# HttpWebRequest 异步下载文件
  • 江苏省国家税务局电话号码
  • 租房交税是房东交还是中介交
  • 怎样查询一个企业是不是一般纳税人
  • 工会银行卡怎么开通
  • 重芳烃闪点70,初馏点是多少
  • 政府对国税局的支持
  • 耕地占用税是土地增值税扣除项目吗
  • 申报土地增值税需要什么资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设