用Php扩展实现的简单框架 - 6 - 使用示例

 可借鉴Zend的使用:

编译到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

将动态url都导向index.php(作为前端控制器);

index.php例如:

<?php


ini_set('display_errors', true);
$br = (php_sapi_name() == "cli")? "/n":"<br>/n";
$space = (php_sapi_name() == "cli")? " ":"&nbsp;";

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";
}


?>

如果访问http://test.dev/group/Test3,则会执行 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";
    }
    
}

?>

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值