用Php扩展实现的简单框架 - 6 - 使用示例
2008-03-24 15:05
1541 查看
可借鉴Zend的使用:
编译到Php,比如编译为共享模块放入Php的扩展目录;
修改Php的配置文件,加入相关条目,只需要指定配置文件的路径:
配置文件
修改Apache的配置文件或者在项目目录中增加.htaccess文件并激活url-rewrite,例如:
将动态url都导向index.php(作为前端控制器);
index.php例如:
如果访问http://test.dev/group/Test3,则会执行
有个不认识的
和
admin.php:
编译到Php,比如编译为共享模块放入Php的扩展目录;
修改Php的配置文件,加入相关条目,只需要指定配置文件的路径:
extension=php_kiss.so [kiss] kiss.cfg_file = "/web/kiss_test/conf/kiss.cfg_file.cfg" |
kiss.cfg_file.cfg样例如下:
RW:test.dev/group group_controller LS:test.dev /web/kiss_test/listeners/ |
RW表示控制器文件的目录,格式:RW:HOST/[MODULE] PATH, LS表示监听器文件的目录,
格式:LS:HOST PATH, 可以使用相对或绝对路径; 注意:因为只作非常简单的解析,所以不要加入多余字符;
修改Apache的配置文件或者在项目目录中增加.htaccess文件并激活url-rewrite,例如:
RewriteEngine on RewriteRule !/.(js|ico|gif|jpg|png|css|php|html)$ /index.php |
index.php例如:
<?php ini_set('display_errors', true); $br = (php_sapi_name() == "cli")? "/n":"<br>/n"; $space = (php_sapi_name() == "cli")? " ":" "; kiss_status(KISS_STATUS_EXT_PATH, ".kiss"); // kiss_status(KISS_STATUS_USE_PORT, 1); // kiss_status(KISS_STATUS_PREFIX_CTL, 0); // kiss_status(KISS_STATUS_SHARE_GP, 0); try { kiss_front_start(); } catch(Exception $e) { // var_dump($e->getTrace()); echo "MSG: ", $e->getMessage(), "$br"; echo "CODE: ", $e->getCode(), "$br"; } ?> |
group_controller目录下的Test3Controller.php; 如要再terminal中测试,可以增加kiss_status(KISS_STATUS_CLI_ROOT, $YOUR_ROOT); 并用kiss_cli_test($URL);代替kiss_front_start();来执行;
Test3Controller.php:
<?php class GroupTest3Controller extends KissAction { public function __construct() { parent::__construct(); echo __METHOD__, "/n"; kiss_set_listener("user", ""); kiss_set_listener("admin", "admin"); kiss_set_listener("admin", "admin", KISS_LS_POST_DISPATCH); kiss_set_listener("user", NULL, KISS_LS_POST_DISPATCH); } public function indexAction() { global $br; echo "I'm from ", __METHOD__, "$br"; kiss_forward("admin"); } public function adminAction() { global $br; echo "I'm from ", __METHOD__, "$br"; } } ?> |
kiss_set_listener()函数,它是为控制器增加监听器的,四个调用的效果分别是: 为该控制器的所有Action增加user“分发前”监听器, 为admin这个Action增加admin
“分发前”监听器,
为admin这个Action增加admin
“分发后”监听器,
为该控制器的所有Action增加user“分发
后
”监听器
; 要察看效果,在
listeners目录中增加: user.php:
<?php class User extends KissListener { public function __construct() { parent::__construct(); echo __METHOD__, "/n"; } public function preDispatch() { $req = kiss_request_get(KISS_REQ_ACTION); $req = $req['action']; echo __METHOD__, " from [$req] <br/>/n"; } public function postDispatch() { $req = kiss_request_get(KISS_REQ_ACTION); $req = $req['action']; echo __METHOD__, " from [$req] <br/>/n"; } } ?> |
admin.php:
<?php class Admin extends KissListener { public function __construct() { parent::__construct(); echo __METHOD__, "/n"; } public function preDispatch() { $req = kiss_request_get(KISS_REQ_ACTION); $req = $req['action']; echo __METHOD__, " from [$req] <br/>/n"; } public function postDispatch() { $req = kiss_request_get(KISS_REQ_ACTION); $req = $req['action']; echo __METHOD__, " from [$req] <br/>/n"; } } ?> |
相关文章推荐
- 用Php扩展实现的简单框架 - 5
- 在Yii框架中使用PHPExcel扩展从数据库导出excel文件功能的实现
- 用Php扩展实现的简单框架 - 7 - v0.2
- 用Php扩展实现的简单框架1
- 用Php扩展实现的简单框架 - 2
- 用Php扩展实现的简单框架 - 3
- 用Php扩展实现的简单框架 - 4
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
- JS简单实现父子窗口传值功能示例【未使用iframe框架】
- 使用Docker、Registrator、Consul、Consul Template和Nginx实现高可扩展的Web框架
- 使用PHP的curl扩展实现跨域post请求,以及file_get_contents()百度短网址例子
- PHP实现的简单在线计算器功能示例
- 使用jquery.form.js实现form表单无刷新提交简单示例
- 使用scws组件分词和phpanalysis分词类实现简单的php分词搜索
- 一个php简单的框架实现,仅实现了简单路由层
- 安装使用php&nbsp;zlib扩展实现页面gzip…
- Yii框架使用PHPExcel扩展从数据库导出excel
- springMVC和Shiro框架整合使用简单示例
- thinkPHP框架实现类似java过滤器的简单方法示例
- 使用Python Falcon框架快速实现简单API