ZF项目总结
来源:互联网 发布:js获取第二个子元素 编辑:程序博客网 时间:2024/06/06 16:45
一、准备工作
1、使用ZF要求的最低版本、开启PDO
2、Apache需要开启 rewrite模块
打开httpd.conf 文件开启rewrite_module 模块,
开启.htaccess目录识别 AllowOverride None 改成 all
二、使用框架
1、手动建立相关目录
2、写配置文件config.ini
在此文件填写ZF路径、数据库信息、前端控制器frontController的分组模块modules目录位置、分组目录下controllers文件夹的名字、分组目录下的不同控制器路径、默认模块是哪个;
填写数据库信息;
填写时区、异常处理等信息;
3、填写入口程序文件index.php
1).入口程序定义了两个个常量:
APPLICATION_PATH----指向application目录
APPLICATION_ENV-------一般填开发环境
2).将ZF框架所在路径包含进当前脚本运行时include路径
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
3).$application->bootstrap()->run();
三、项目设计思路
1、前端页面和后台controller的交互
前台页面先使用AJAX和后台交互验证密码,验证成功后再利用JS地址跳转再次请求后台,进入后台;
好处:ajax不用刷新页面即可与后台通信,用户体验好,登陆按钮采用的是<a>标签配背景图片,不使用button提交
后台页面首次接受请求后先给浏览器一个登陆页面---默认的index.phtml,前端AJAX验证密码过程中调用model逻辑处理数据库,JS请求后再给前台一个登陆页面。
2、区分合并在同个action中的不同逻辑
后台检查前台请求中有无传递一个flag变量,如果有则调业务逻辑,无则为首次进去,给前台一个页面即可;
3、controllers的设计思路
当这个controller类中的不同action(即不同方法)需要多次使用某一个或者多个变量,或者是在该类实例化时就连接数据库、或者实例化一个业务处理model类,考虑到方便,这时可以把该变量作为该controller类的成员变量来供action公共使用,在变量的初始化及相关操作则放置init()方法中完成,改方法是构造函数最后调用的一个任务;
四、内置函数的使用
$this->view->baseUrl(); 内置方法
五、常识
Controller可以直接实例化model类
Controller可以直接调用view类方法赋值,类似smarty
每个模块的使用方法都是搞清楚了功能以后
1.先实例化改组件类 2.调用该类的方法
六、各模块讲解
1、Bootstrap 引导程序
2、/public/index.php 入口程序
在入口程序中重新设定了set_include_path,这样比Define 一个代表地址的常量再拼接更方便,连常量都省了,直接include就行了。
然后初始化Zend_Application类,这个类的作用如下:
Initialize application. Potentially initializes include_paths, PHP settings, and bootstrap class.
这个类也初始化了bootstrap 引导程序,调用它的run()方法运行程序。
值得一提的是在Bootstrap 文件中有两个以_ _init开头的方法,__construct 方法的最后一个调用的任务
_initAppAutoload() _initDatabase()
所以相当于在构造方法中完成了一个功能---拿到一个数据库的连接,以后使用数据库的时候不需要在构造了,因为参数比较麻烦,而Controller里的业务处理经常需要用到model层的操作,而model需要调用数据库连接;所以这是一个技巧,需要重复使用的东西单独提炼出来。
七、前端控制器
Zend_Controller_Front目的在于初始化请求环境,并路由到来的请求,接着分发任何发现的动作;收集所有的响应,在整个过程完成时就其返回。
前端控制器中访问环境的方法中有(set|get)Request()方法指定分发过程中使用的请求类或对象,以及获取当前的请求对象。设置请求对象时,可以传入一个请求类的名字,该方法将加载类文件并创建实例。
而class Zend_Controller_Request_Http extends Zend_Controller_Request_Abstract类中有个得到PHP中超全局变量POST的方法getPost($key = null, $default = null)
注:超变量GET的获取方法名为getQuery
八、命名空间
在每个模块下的Bootstrap.php文件中规定了改模块对应的命名空间,ZF在实例化相关model类等时会根据class的命名,从响应的命名空间所对应的basepath里去取相应的类,所以命名的规则就该明了了。
protected function _initAutoload() {
$autoloader=new Zend_Application_Module_Autoloader
(array(
'namespace' => 'default',
'basePath'=>APPLICATION_PATH.'/modules/default');
return $autoloader;
}
九、视图相关
如果不想在action执行完毕后不让ZF调用视图,那么直接用exit方法,这个不管是不是在框架内都通用! 可以不需要调用麻烦的。。
- ZF项目总结
- zf项目创建
- zf数据库操纵总结
- ZF 命令行下项目创建
- ZF
- ZF
- Ubuntu 下无法使用 zendframework zf.sh 命令创建项目
- 【小结】利用zf Command Line Tool 建立项目结构
- Zend Framework:使用Command命令行建立ZF项目
- 初学ZF
- ZF快捷键
- ZF学习
- 初识zf
- ZF-net
- ZF-net
- 采用zf.bat方式安装ZendFramework及创建项目详细步骤
- 用zf.bat创建zendframework项目时,出现的pdo错误
- ZF项目下自定义自增字段保证事务安全的代码演示
- ubuntu12.04快速安装php imagick扩展
- hdu 1496 Equations
- 二叉树重建(先序+中序)
- Java之网络编程初解
- 判断一个文件的可执行性
- ZF项目总结
- 在Android开发中如何移除EditText上的输入焦点
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- jquery正则替换所有逗号,
- su 与su-的区别
- 图论-生成树计数
- 在线C语言编译器/解释器
- 编程技巧
- 文件流