




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、zend framework + smarty 应用实例一、zend framework简介zend framework 使 用 模型-视 图-控 制 器( model-view-controller(mvc) )结构。这个用来把你的程序分离成不同部分使得开发和维护变得容易。运行 zend framework需要: php 5.1.4 (或更高 ) 、web 服务器支持mod_rewrite 功能,本实例采用apache。从这里 http:/ 下载 zend framework,有两种格式 .zip 或者.tar.gz。二、zend framework的配置1、目录结构虽然 zend fram
2、ework 没有强求使用一个标准的目录结构,但是还是有一些通用的目录结构。 这个目录结构假设你完全控制apache 的配置。 (下面以本机做例子,各位需根据自己的情况进行更改,我的服务器的根目录指向的是web文件夹)web/ test/ /webapp /controllers /models /templates /templates_c /library /webroot /images /js /css 我们已经把程序中的模型、 视图和控制器的文件分离到不同的子目录中。支持的图像,脚本和css 文件被存放在 webroot 目录下的不同子目录中。下载的zend framework 文件放
3、在library 目录下。如果我们还需要其他库文件,都可以放在这里。在这个实例中,我们使用到了 smarty 模版技术,所以 smarty 的库文件我们也应该放在library文件下!2、启动文件1) 配置.htaccess 我们使用单一的入口文件index.php 来对我们的程序进行访问,这给我们提供了程序中所有页面的中心点并确保运行环境配置正确。我们用.htaccess 文件来实现这个目的,添加.htaccess 文件在 test 的根目录中,内容如下:rewriteengine on rewriterule !.(js|ico|gif|jpg|png|css)$ index.php 2)
4、配置 apache 与此同时,我们还需要对apache进行一些设置,打开apache的配置文件 httpd.conf。1、找到“ #loadmodule rewrite_module modules/mod_rewrite.so 这句话,把前面的 #去掉!2、然后再找到“ allowoverride none 改成 allowoverride all ,重新启动 apache即可。3、启动文件 index.php index.php放在 test的根目录下,下面是index.php的内容:php setcontrollerdirectory(array(default=./webapp/con
5、trollers); /抛出异常$frontcontroller-throwexceptions(true); /设置基地址 ,方便以后 url 的跳转用户 ,.注意,区分大小写!$frontcontroller-setbaseurl(/test); /使用 smarty模版需关闭本身的视图助手. $frontcontroller-setparam(noviewrenderer, true); / 关闭错误提示,发生请求错误时候,转到errorcontroller 的erroraction 控制器/$frontcontroller-throwexceptions(false); /对。 。进行
6、注册zend_registry:set(font, $frontcontroller); /- 配置 smarty模版 - include smarty/smarty.class.php; /* * 对 smarty模版进行初始化*/ $views = new smarty(); /$views-left_delimiter = ; /$views-right_delimiter = ; $views-compile_dir = ./webapp/templates_c; $views-cache_dir = ./webapp/templates_c/cache_c; $views-templ
7、ate_dir = ./webapp/templates; function smarty_block_dynamic($param,$content,&$views) return $content; $views-register_block(dynamic,smarty_block_dynamic,false); zend_registry:set(views, $views); /开始运行程序$frontcontroller-dispatch(); ? /php 4)启动文件说明zend framework 是这样设计的,所有的文件必须包含在include_path 中。我们也
8、把我们的模型目录包含在include path 中,这样我们以后就 能 很 容 易 加 载 我 们 的 模 型 类 。 一 开 始 , 我 们 必 须include zend/loader.php ,这样我们就能访问zend_loader 类,在 zend_loader 类中有静态方法使我们能够加载其他zend framework 类,例如:zend_loader:loadclass(zend_controller_front); zend_loader:loadclass 加载已经命名的类。它是把下划线转换成路径 隔 离 符 来 实 现 的 , 并 在 最 后 加 上 .php 后 缀 。
9、这 样 , 类zend_controller_front 将从 zend/controller/font.php 加载。如果你在你的类库里使用相同的命名规则,就可以用zend_loader:loadcass()来加载它们。我们需要加载控制器类和路由类。前端控制器用路由类来映射请求的url 到正确的php 函数,然后显示页面。为了能使路由工作,需要解决url 的哪一部分是指向index.php 的路径,这样它就可以在那个点后面寻找url 元素。我们需要配置前端路由器, 这样它就知道从哪个目录里找出我们的控制器。$frontcontroller = zend_controller_front:ge
10、tinstance(); $frontcontroller-setcontrollerdirectory(./application/controllers); 设置抛出异常, 但是在服务器真正工作以后, 我们不应该显示错误信息给用户看。$frontcontroller-throwexceptions(true); 由于在本实例中我们使用smarty模版技术。所以我们关闭 zf 本身自带的 view。$frontcontroller-setparam(noviewrenderer, true);设置基地址,方便以后设置url来进行跳转。$frontcontroller-setbaseurl(/
11、test);zend_registry:set(font, $frontcontroller);接下来,我们对smarty 进行设置。首先我们在类库中引用了 smarty.class.php这个类。并且对它的路径进行了设置,以便让 zf 知道它的位置。php include smarty/smarty.class.php; /* * 对 smarty模版进行初始化*/ $views = new smarty(); /$views-left_delimiter = ; /$views-right_delimiter = ; $views-compile_dir = ./webapp/templa
12、tes_c; $views-cache_dir = ./webapp/templates_c/cache_c; $views-template_dir = ./webapp/templates; function smarty_block_dynamic($param,$content,&$views) return $content; $views-register_block(dynamic,smarty_block_dynamic,false); /php 在这里,我们用zf 的对象注册表 (registry)来对$view 来进行存贮,这 样 , 在程 序 的 任何 对 方 ,
13、我 们 都 可以 调 用 它来进 行 操作 。zend_registry:set(views, $views); 设 置 好 了 以 后 , 运 行 程 序 。$frontcontroller-dispatch(); 这个时候,你如果运行/test 来进行测试。会发现有个错误类似fatal error: uncaught exception zend_controller_dispatcher_exception with message invalid controller specified (index) in这个是因为我们还没有设置好我们程序。3、设置程序
14、在设置文件以前,理解zend framework 如何组织页面很重要。每个应用程序的页面叫做action ,许多 action 组成控制器。例如,对于这样一个格式的url http:/localhost/test/news/view/id/1 来说,控制器是 news, action 是 view,后面的 id 和 1,分别是往这个 actionview 传递的参数和值。zend framework 控制器把index 作为一个缺省的action 而保留为特别的 action。这样,对于http:/localhost/test/news/ 这样的 url,在news控制器里的index act
15、ion 将被执行。 zend framework 也保留了一个缺省的控制器,也叫做index。这样,http:/localhost/test/ 将执行index 控制器下的action index。4、设置控制器现在可以设置控制器了。在zend framework 里,控制器是一个必需被叫做 controller namecontroller 的类。注意 controller name 必需以 大 写 字 母 开 头 。 并 且 , 这 个 类 必 须 在 叫 做 controller namecontroller.php 这样的文件中,这个文件还必需在特定的控制器目录中。强调一下, cont
16、roller name必需以大写字母开头并其他字母一定是小写。每个action 是在控制器类里的public 函数,名字必需是action nameaction。在这里, action name应该以小写字母开头。这样在文件test/webapp/controllers/indexcontroller.php 里我们的控制器类叫做indexcontroller,位置:test/webapp/controllers/indexcontroller.php php /php 我们现在有三个我们想使用的action,直到我们设置好视图,它们才工作。其中function init 是个特殊的函数,简单
17、的说,它就是在controller 中的构造函数时调用的函数。每个 action的 url 如下:http:/localhost/test/ in indexcontroller:indexaction() http:/localhost/test/index/add in indexcontroller:addaction() 现在,我们在程序里有个能工作的路由器和每个页面的action。5、设置视图因为本实例使用的的是smarty 模版,所以和 zf 本身的 view 视图在实现过程中,稍微有点区别!下面我直接介绍在zf 里是任何使用smarty的。在使用 smarty 之前,我们应该先取
18、出在index.php里定义的$view,并且定义好,需要在模版显示的变量。php class indexcontroller extends zend_controller_action var $views; /*模板对象 */ var $data; /*传递模版变量的对象 */ function init() /拿回注册过的对象$this-views = zend_registry:get(views); function indexaction() /定义模版显示的变量$datatitle=hello world;/传递变量到模版$this-views-assign($data); /
19、显示模版$this-views-display(index/index.tpl); function addaction() /php 下面 我们开始做 视图 文件, 它们 的位置是test/webapp/templates/index/index.tpl php $title $title /php 这个时候,输入 /test看看。 应该会出现“hello world 了。这样,一个简单的实例就完成了。下面我们结合xmlrpc 技术来实现一个稍微复杂一点的实例!三、xmlrpc 1、什么是 xmlrpc xmlrpc , 顾名思义 ,就是应用了 xml 技术的
20、rpc。 那么什么是 xml和 rpc了?rpc是 remote procedure call的缩写, 翻译成中文就是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算,是为了提高各个分立机器的“互操作性而发明出来的技术。xml和 rpc 一样也是一个东西的缩写,这个东西就是extensible markup language ,中文意思就是可扩展标记语言,标记语言就是那种用尖括号( )括来括去的那种语言,比如说html 。xml 的可扩展性也体现在它只定义了语言的格式,而并没有定义过多的关键字,也就是通常所说的标记(tag) ,所以用户
21、可以自由地选择定义标记。它的这种自由和简单的语法规则也使得它广为流传,用来表示各种数据。2、在 zf 中使用 xmlrpc 1)创建 indexcontroller.php 下面我们来完成一个实例,为了方便起见,就不建立新的controller,把刚才我们建立的indexcontroller 修改一下,就能使用了!另外我们还需要建立一个xmlrpc 的服务端程序。位置在web 服务器的根目录上(在本机中,也就是在 test文件的上级目录中, 取名为 1.php) ,由于 xmlrpc使用到了类库,我们还需要下载libphpxmlrpc 放在library 文件夹下!文件位置: test/web
22、app/controller/indexcontroller.php php class indexcontroller extends zend_controller_action var $views; /*模板对象 */ var $data; /*传递模版变量的对象 */ public function init() /拿回注册过的对象$this-views = zend_registry:get(views); $this-font = zend_registry:get(font); /得到基地址$this-baseurl=$this-font-getbaseurl(); funct
23、ion indexaction() include libphpxmlrpc/xmlrpc.inc; include libphpxmlrpc/xmlrpcs.inc; if (isset($_postvar1) & isset($_postvar2) /创建客户端$client = new xmlrpc_client(/1.php); /创建一个实例 $msg = new xmlrpcmsg(add, array( new xmlrpcval($_postvar1, int), new xmlrpcval($_postvar2, int); /发送信息,
24、$response=$client-send($xmlrpc_message); ,服务器返回xmlrpcresp的一个实例$retval = $client-send($msg); if ($retval-faultcode() print_r(发生一个错误 : ); print_r(原因: . htmlspecialchars($retval-faultstring(); else /$retval-value()获取应答的xmlrpcval(也就是服务器端返回的结果) ,$retval-value()-scalarval();得到描述应答结果的php变量$sum = $retval-value()-scalarval(); $datavar1=$_postvar1; $datavar2=$_postvar2; $datasum=$sum; $dataaction= $this-base
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长治市人民医院超声引导穿刺考核
- 朔州市中医院补体检测临床意义考核
- 2025年中国球型氧化铝项目商业计划书
- 承德市中医院脊柱术后并发症处理考核
- 北京市人民医院骨皮瓣移植技术考核
- 北京市人民医院造血干细胞计数与活力检测考核
- 邯郸市中医院血液检验危急值报告流程考核
- 呼和浩特市中医院科室学术影响力建设考核
- 石家庄市人民医院胃底静脉曲张治疗考核
- 2025妇幼保健院儿童颅内肿瘤手术专项技能考核
- DB11∕T 1010-2019 信息化项目软件开发费用测算规范
- 生物安全知识培训
- 卫星通讯基础知识
- 新龙县介绍模板
- 2025-2026学年人教版(2024)初中体育与健康八年级全一册《兴趣伴成长》教学设计
- 2025年题库红色知识竞赛题库全集及参考答案
- 幼儿园中班语言《恐龙妈妈藏蛋》课件
- 规范垂直大模型质量验收规程
- 蒙古族民俗风情
- 全国川教版信息技术八年级下册第一单元第1节 《设计创意挂件》教学设计
- 餐饮服务员工岗位培训教材汇编
评论
0/150
提交评论