日期:2014-05-20  浏览次数:20738 次

这次开发中会用到的ZendFrameWork模块
Zend_Db
Zend_Controller
Zend_View
Zend_Config
Zend_Loader
Zend_Feed
Zend_Session
Zend_Acl
Zend_Auth
Zend_Log
Zend_Cache
Zend_Json
Zend_Mail
Zend_Search
Zend_XmlRpc


1 各模块工作原理
1.1Zend_Models工作原理
通过继承Zend_Db_Table(abstract类)管理一个Model类。



1.2Zend_Controller工作原理
Zend_Controller_Front接收一个请求,然后由Zend_Controller_Router来决定分配给哪个controller(实现Zend_Controller_Action的类)。Zend_Controller_Router把URI分解封装成一个

Zend_Controller_Dispatcher_Token对象。Zend_Controller_Front接着进入一个分配循环,调用Zend_Controller_Dispatcher,把token对象传给dispatcher来分配到具体的controller和action进行处理。在controller结束后,又把控制权交加给Zend_Controller_Front。如果controller发现需要分配另一个controller(返回一个新的token对象),循环会一直继续直到另一次分配执行完毕。

Zend_Controller_Action提供控制器的基本方法,其他控制器都应该是Zend_Controller_Action的子类。





说明:

Zend_Controller_Dispatcher对象在Zend_Controller_Front和实现Router、Dispacther接口的类之间传递。它把Controller、Action和其他Get参数封装到一起。



处理Controller名称:getControllerName()、setControllerName();

处理Action名称:getActionName()、setActionName();

传递给Action参数:getParams()、setParams()。参数是数组key/value形式。



1.3Zend_Views工作原理
2 ZFW基本配置
Index.php



//设置路径

set_include_path();



//包含Zend/Loader.php类

include'Zend/Loader.php';



//通过类的静态方法加载其他类

Zend_Loader::loadClass('Zend_Controller_Front');

Zend_Loader::loadClass('Zend_Config_Ini');

Zend_Loader::loadClass('Zend_Registry');

Zend_Loader::loadClass('Zend_Db');

Zend_Loader::loadClass('Zend_Db_Table');

Zend_Loader::loadClass('Zend_Debug');

Zend_Loader::loadClass('Zend_Auth');



//加载配置

newZend_Config_Ini

Zend_Registry::getInstance()



//设置前端控制器

Zend_Controller_Front::getInstance()

setControllerDirectory()

dispatch()



在index.php不用 ’?>’结束,便于错误调试?



类名需要写成模块名_文件名





3 MVC处理规则
所有的请求都通过单一的index.php作为启动文件,或者说对任何url,重定向到index.php。对于iamges、css、javascript的请求,不应该重定向到启动文件,把这些文件放到其他目录,如:public。默认controller和action都是index。



Model的命名:默认类名跟表名保持一致,关键字默认id。可以指定表名和主键名,private$_name=’’和private $_primary=’’。

Controller的命名:类名和文件名一致,{Controllername}Controller.php,每个单词都以大写字母开头;

Action的命名:每个Action是Controller里的public函数,名字必须是{actionname}Action,actionname要小写。每个页面叫做‘action’,许多‘action’组成控制器。

Views的命名:存放到对应Controller下并以action.phtml命名。