LZ帮助(LZ框架)
前言:
目的是要能实现ZEND的URL重写功能,能够将诸如:(/index/show)解析为index控制器的show动作。
其它数据库连接,模板页等用其它技术实现。
从Zend中提取部分文件并修改部分代码使其能独立运行。
Controller.php <=>/Zend/Controller/Action.php
Exception.php <=>Exception.php
LZ.php <=>/Zend/Controller/Request/Http.php
Loader.php <=>/Zend/Loader.php
Module.php<=>/Zend/Controller/Router/Route/Module.php(已整合进Request.php文件)
Registry.php <=>/Zend/Registry.php
Request.php <=>/Zend/Controller/Request/Abstract.php
ZendLicense.txt---Zend中相关许可信息。
use_zend.php------要将在此环境下开发的项目换成Zend,请在设置好include_path后单独加载此文件,并去掉其它文件的加载。
zend2lz.php-------要使用此环境运行Zend下开发的项目,请在设置好include_path后单独加载此文件,并去掉其它Zend相关文件的加载。(在Zend项目中使用的部分函数会报错,请注意排查。)
帮助.txt----------本文
首先:
设置Apache配置文件中对应网站目录的属性(不推荐修改全局属性):
AllowOverride all
#设置可重写
RewriteEngine on
#重写规则
设置重写文件名
RewriteRule !/.(js|ico|gif|jpg|png|css)$ index.php
在网站目录内建立文件:.htaccess
<<
RewriteEngine on
RewriteRule !/.(js|ico|gif|jpg|png|css)$ t_z.php
#设置重写文件名
>>
进行重写的文件中(通常用index.php):
1.设置包含目录将LZ所在目录包含进去。
set_include_path('D:/Server/WebRoot/_T_FTP/includes' . PATH_SEPARATOR . get_include_path());
2.载入如下三个文件:
require_once('LZ/LZ.php');//核心主文件。
require_once('LZ/Controller.php');//控制器类
require_once('LZ/Registry.php');//全局变量注册类。//不需要时可以不加
建议:
LZ_Registry::set('webroot','http://192.168.8.106/Test/webroot/');
//将网站根目录保存为全局变量
设置网站根URL,当“重写文件”不是位于IP/域名:端口/下时这样种能保证系统能正常运行,记得在每个URL路径前加上这个变量就行了。
/**
*是否显示调试信息。Fatal error: Uncaught exception
*/
$showFatalError = 1;//强制显示Fatal error:信息。
$lz = new LZ();//创建主类实例。
$lz ->setControllerDirectory('G:/WebRoot/tlz/controller');//设置控制器路径
$lz ->dispatch();//调用控制器和动作。
控制器类:
控制器类要继承自:Controller。文件名和类名要相同以Controller结尾。
控制器内构造函数请用init(),不要使用__construct()。
动作名(函数)要以Action结尾如:indexAction(),注意名称首字母不要大写(避免某些系统不支持导致转到Zend时可能会出错)。
可以使用LZ_Loader::loadClass来载入要用的模块处理类。
保留了_redirect函数,_redirect($toUrl,$tipInfo,$back,$useBaseUrl)
* @param string $toUrl 要重定向到的地址
* @param string $tipInfo 提示信息
* @param int $back 是否后退,为1时执行后退操作,忽略$toUrl值,
如果无后退页面返回的网站的首页。
* @param int $useBaseUrl 是否添加BaseUrl(基础路径),默认使用,
要使用全路径跳转,请将该项置假(除特殊需要不推荐使用)
函数在客户端启用脚本时会弹出对话框提示,在客户端禁用了脚本后会显示提示信息。
在控制器里添加了assemble(array)函数用于将数组构成URL。函数后会返回带有控制器和动作的及数组参数的URL。(不推荐使用,因为Zend不支持。)
保留了setBaseUrl()函数,通常使用setBaseUrl(WEB_ROOT_URL);设置基础URL,在LZ系统中主要影响_redirect函数,在其使用全路径时会失效。
使用多个模块请设置多个控制器路径$lz ->setControllerDirectory(array()),其中数组中的default项的值为默认的模块,其它项的值为其它模块。使用其它模块时用:/module/controller/action。
注意:
不要在重写文件中输出任何信息,这可能会引起后续程序在调用_redirect()函数时出错。
系统默认不支持?controller=***&action=***&module=***这种方式。
不推荐使用?controller=conname&action=actionname..形式--转换到Zend时不支持。
但可以通过调用Request->setUseOtherMode()来启用这种方式,强烈建议不要同时使用/controller/action/和?controller=***&这两种方式,这将会出现意想不到的结果(因为启用后系统会使用这三个GET变量名也会调用POST同名变量,注意不要覆盖。优先顺序为GET最优,POST其次,/controller/action/最后)。
URL:/controller/action/不支持中文(动作可以使用中文,但强烈不推荐--转换到Zend时不支持)。
未支持修改默认模块、默认控制器及默认动作。
$this->_forward('index','tza',null);//函数
系统不支持出错时调用ErrorController。没有实现对应的错误处理方法。请注意使用__call()来进行处理。
Linux系统区分大小写,请注意统一。
初学者参考:(Zend相关帮助)
获得URL传递的参数的值使用$controller->_getParam(参数名)。
检查URL中是否存在指定的参数$controller->_hasParam(参数名)。
要设置URL传递的参数的值使用$controller->_setParam(参数名,值)。
要获得全部URL传递的参数使用$controller->_getAllParams()。
重定向请用$controller->_redirect(目标位置,提示信息,是否后退(为1时执行后退操作,忽略$toUrl值))。
其它函数请参见源文件。