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');
//加载配置
new Zend_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命名。
阅读(1158) | 评论(0) | 转发(0) |