位置: 编程技术 - 正文

Zend Framework+smarty用法实例详解

编辑:rootadmin

推荐整理分享Zend Framework+smarty用法实例详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了Zend Framework+smarty用法。分享给大家供大家参考,具体如下:

一、Zend Framework简介

Zend Framework使用模型-视图-控制器(Model-View-Controller(MVC))结构。这个用来把你的程序分离成不同部分使得开发和维护变得容易。

运行Zend Framework需要:PHP 5.1.4 (或更高) 、Web 服务器支持 mod_rewrite功能,本实例采用Apache。 从这里 Zend Framework,有两种格式.zip或者.tar.gz。

二、Zend Framework的配置

1、目录结构

虽然Zend Framework 没有强求使用一个标准的目录结构,但是还是有一些通用的目录结构。这个目录结构假设你完全控制Apache 的配置。(下面以本机做例子,各位需根据自己的情况进行更改,我的服务器的根目录指向的是Web文件夹)

引用:

Web/test/ /webapp/controllers /models /templates/templates_c /library /webroot/images /js/css

我们已经把程序中的模型、视图和控制器的文件分离到不同的子目录中。支持的图像,脚本和CSS 文件被存放在webroot 目录下的不同子目录中。下载的Zend Framework 文件放在 library 目录下。如果我们还需要其他库文件,都可以放在这里。在这个实例中,我们使用到了Smarty模版技术,所以Smarty 的库文件我们也应该放在library文件下!

2、启动文件

1) 配置.htaccess

我们使用单一的入口文件index.php来对我们的程序进行访问,这给我们提供了程序中所有页面的中心点并确保运行环境配置正确。我们用.htaccess 文件来实现这个目的,添加.htaccess 文件在test 的根目录中,内容如下:

2)配置Apache与此同时,我们还需要对apache进行一些设置,打开apache的配置文件 httpd.conf。

1、找到“#LoadModule rewrite_module modules/mod_rewrite.so 这句话,把前面的#去掉!

2、然后再找到“AllowOverride None 改成AllowOverride All,重新启动apache即可。

3、启动文件index.phpindex.php放在test的根目录下,下面是index.php的内容::

4)启动文件说明

Zend Framework 是这样设计的,所有的文件必须包含在 include_path 中。我们也把我们的模型目录包含在 include path 中,这样我们以后就能很容易加载我们的模型类。一开始,我们必须 include Zend/Loader.php,这样我们就能访问Zend_Loader 类,在Zend_Loader 类中有静态方法使我们能够加载其他Zend Framework 类,例如:

Zend_Loader::loadClass 加载已经命名的类。它是把下划线转换成路径隔离符来实现的,并在最后加上.php 后缀。这样,类Zend_Controller_Front 将从Zend/Controller/font.php 加载。如果你在你的类库里使用相同的命名规则,就可以用Zend_Loader::loadCass()来加载它们。我们需要加载控制器类和路由类。

前端控制器用路由类来映射请求的 URL 到正确的 PHP 函数,然后显示页面。为了能使路由工作,需要解决 URL 的哪一部分是指向index.php 的路径,这样它就可以在那个点后面寻找url 元素。

我们需要配置前端路由器,这样它就知道从哪个目录里找出我们的控制器。

设置抛出异常,但是在服务器真正工作以后,我们不应该显示错误信息给用户看。

由于在本实例中我们使用Smarty模版技术。所以我们关闭ZF本身自带的view。$frontController->setParam('noViewRenderer', true);设置基地址,方便以后设置url来进行跳转。$frontController->setBaseUrl('/test');Zend_Registry::set('font', $frontController);接下来,我们对Smarty进行设置。首先我们在类库中引用了Smarty.class.php这个类。并且对它的路径进行了设置,以便让ZF知道它的位置。:

在这里,我们用ZF的对象注册表(Registry)来对$view来进行存贮,这样,在程序的任何对方,我们都可以调用它来进行操作。Zend_Registry::set('views', $views);设置好了以后,运行程序。$frontController->dispatch();

这个时候,你如果运行 来进行测试。会发现有个错误类似 Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (index)' in…这个是因为我们还没有设置好我们程序。

3、设置程序

在设置文件以前,理解Zend Framework 如何组织页面很重要。每个应用程序的页面叫做 action ,许多 action 组成控制器。例如,对于这样一个格式的 URL 来说,控制器是news, action 是view,后面的id和1,分别是往这个actionView传递的参数和值。

Zend Framework 控制器把 index 作为一个缺省的action 而保留为特别的action。这样,对于 这样的url,在news控制器里的 index action将被执行。Zend Framework 也保留了一个缺省的控制器,也叫做index。这样, 将执行 index控制器下的 action index。

Zend Framework+smarty用法实例详解

4、设置控制器

现在可以设置控制器了。在Zend Framework 里,控制器是一个必需被叫做{Controller name}Controller 的类。注意{Controller name}必需以大写字母开头。并且,这个类必须在叫做{Controller name}Controller.php这样的文件中,这个文件还必需在特定的控制器目录中。强调一下,{Controller name}必需以大写字母开头并其他字母一定是小写。每个action是在控制器类里的public 函数,名字必需是{action name}Action。在这里,{action name}应该以小写字母开头。这样在文件 test/webapp/controllers/IndexController.php 里我们的控制器类叫做 IndexController,位置:test/webapp/controllers/IndexController.php:

我们现在有三个我们想使用的action,直到我们设置好视图,它们才工作。其中function init是个特殊的函数,简单的说,它就是在controller中的构造函数时调用的函数。

每个action的 URL 如下:

in IndexController::indexAction() in IndexController::addAction()

现在,我们在程序里有个能工作的路由器和每个页面的 action。

5、设置视图

因为本实例使用的的是Smarty模版,所以和ZF本身的View视图在实现过程中,稍微有点区别!下面我直接介绍在ZF里是任何使用Smarty的。在使用Smarty之前,我们应该先取出在index.php里定义的$view,并且定义好,需要在模版显示的变量。:

下面我们开始做视图文件,它们的位置是test/webapp/templates/index/index.tpl:

代码:

这个时候,输入 world 了。

这样,一个简单的实例就完成了。下面我们结合Xmlrpc技术来实现一个稍微复杂一点的实例!

三、XMLRPC

1、什么是XMLRPC

XMLRPC,顾名思义,就是应用了XML技术的RPC。那么什么是XML和RPC了?

RPC是Remote Procedure Call的缩写,翻译成中文就是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算 ,是为了提高各个分立机器的“互操作性 而发明出来的技术。

XML和RPC一样也是一个东西的缩写,这个东西就是eXtensible Markup Language,中文意思就是可扩展标记语言,标记语言就是那种用尖括号(<>)括来括去的那种语言,比如说HTML。XML的可扩展性也体现在它只定义了语言的格式,而并没有定义过多的关键字,也就是通常所说的标记(Tag),所以用户可以自由地选择定义标记。它的这种自由和简单的语法规则也使得它广为流传,用来表示各种数据。

2、在ZF中使用XMLRPC

1)创建IndexController.php

下面我们来完成一个实例,为了方便起见,就不建立新的Controller,把刚才我们建立的IndexController修改一下,就能使用了!另外我们还需要建立一个XMLRPC的服务端程序。位置在WEB服务器的根目录上(在本机中,也就是在test文件的上级目录中,取名为1.php),由于XMLRPC使用到了类库,我们还需要下载libphpxmlrpc放在library文件夹下!

文件位置:test/webapp/controller/IndexController.php:

2)创建显示模版文件

位置:test/webapp/templates/index/index.tpl:

hello,下面演示的是利用Xmlrpc调用远程服务器方法的实例!并且我们把得到的结果传递到另外的一个函数中去!

代码:

位置: test/webapp/templates/index/add.tpl:

3)创建XMLRPC服务器端程序

位置:web/1.php:

OK,现在打开http;//.0.0.1/test/看看。刚才建立的那个XMLRPC应该已经建立起来了,输入数字,测试一下吧!

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

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

Zend Framework连接Mysql数据库实例分析 本文实例讲述了ZendFramework连接Mysql数据库的方法。分享给大家供大家参考,具体如下:在看这些之前请确保你正确加载了PDO扩展。做法是编辑php.ini。手

Zend Framework基本页面布局分析 本文实例讲述了ZendFramework基本页面布局方法。分享给大家供大家参考,具体如下:ZendFramework的页面布局模块——Zend_Layout——既可以跟MVC一起使用,也

Zend Framework缓存Cache用法简单实例 本文实例讲述了ZendFramework缓存Cache用法。分享给大家供大家参考,具体如下:phprequire'Zend/Loader.php';Zend_Loader::loadClass('Zend_Cache');Zend_Loader::loadClass('Zend_Conf

标签: Zend Framework+smarty用法实例详解

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

上一篇:ThinkPHP使用Smarty第三方插件方法小结(thinkphp smarty)

下一篇:Zend Framework连接Mysql数据库实例分析(framework 4 client profile)

  • 个人所得税信息采集怎么弄
  • 本期收入和本期免税收入有什么区别
  • 税友财务软件一年多少钱
  • 交车辆保险的车能买吗
  • 企业罚职工的钱违法吗?
  • 文化建设税减免到什么时候
  • 长期待摊费用的账务处理
  • 免税是不是不用交税
  • 滴滴出行怎么弄电子发票
  • 金蝶专业版怎么导入备份账套
  • 用友工资系统参数设置
  • 债务清偿如何进行税务处理
  • 独立核算分公司注销与总公司账务
  • 分期付款外币采购形成的差异如何做会计处理?
  • 付城镇土地使用税是多少
  • 无实收资本能日本投资吗
  • 调增应纳税所得额
  • 母公司给子公司担保需要决议吗
  • 从农民手中购买农产品税率
  • 单次劳务费税率
  • 水利建设专项收入怎么计算
  • 单边征收
  • 出口退税率怎么算公式是什么
  • 收据和发票有什么区别图片
  • 企业销售收入含不含税
  • 开票金额与收入金额有差额可以吗
  • 挂靠别人的资质进行房屋建筑会计怎样做账?
  • 两地取得工资个税怎么交
  • 增值税开票系统客服电话
  • 长期股权投资增加的原因
  • 附加税享受税收减免的怎么记账
  • 什么是土地使用者依照法律规定
  • php删除数据库数据代码
  • wifi信号弱了
  • php图片库
  • crontab不执行的原因和解决方案
  • 工地临时设施搭设原则是什么?
  • php sendmail
  • 零星分布的意思
  • uni-app开发教程
  • 利润表本月数可以不填吗
  • 德国楚格峰一日游攻略
  • 收到预付货款下月交货会计分录
  • 研发费用怎样进项抵扣
  • 深度计算公式
  • 无法将node项识别为
  • 农村土地承包经营权流转合同
  • 火车票抵税申报表怎么填
  • 企业所得税预缴纳税申报表
  • 当月开的增值税发票当月能抵扣吗
  • 政府补贴进项税额处理
  • 收到加工费怎么做账务处理分录
  • 如何核算购进商品
  • 停产工人工资计入哪个科目
  • 会议费报销管理办法
  • 收入与成本不配合
  • 转账时转错账号怎么办
  • myeclipse自动生成get set
  • Windows自带的游戏怎么删除
  • 新装的ubuntu18没有网络
  • win7如何查看图片的rgb
  • uca1
  • win8.1安装过程
  • WIN10怎么彻底删除works2
  • 使用linux的电脑
  • 3dmconfig.ini有什么用
  • ecxel进度条
  • node.js基础入门
  • Android 中的guideline
  • Android 近百个项目的源代码
  • unity如何避免碰撞穿透
  • unity之血瓶金币的生成
  • js正则 \w
  • 数据类型 python
  • 安卓调用系统相机
  • 如何查询个体工商户是查账征收还是核定征收
  • 天津市国税局网站
  • 携程怎么订
  • 没工作个人所得税怎么交
  • 资源税的计税方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设