返回介绍

2.2.3 测试Behaivor

发布于 2020-10-05 11:38:12 字数 2802 浏览 965 评论 0 收藏 0

测试Behavior

Behavior 遵循TP的自动加载方式,所以直接创建对应的Behavior 并填写模拟参数调用run()方法即可

样例:

行为PaidChongzhiOrderBehavior.class.php

/**
 * 支付充值订单后
 */
class PaidChongzhiOrderBehavior extends BaseBehavior  {

    /**
     * @param PaidOrderBehaviorParam $param
     */
    public function run(&$param) {
        parent::run($param);

        //你的代码
    }
}

Behavior参数类PaidOrderBehaviorParam.class.php

class PaidOrderBehaviorParam extends BaseBehaviorParam {

    /**
     * @var 订单号
     */
    public $orderid;

}

调用样例:

<?php

namespace Payment\Controller;

use Common\Controller\Base;
use Payment\Behavior\PaidChongzhiOrderBehavior;
use Payment\BehaviorParam\PaidOrderBehaviorParam;

class TestController extends Base {

    function testPaidChongzhiOrderBehavior(){
        $b = new PaidChongzhiOrderBehavior();
        $bp = PaidOrderBehaviorParam::create(['orderid' => '2016111011144970299']);
        $b->run($bp);
    }
}

建议

为每个行为都配合写一个 PaidOrderBehaviorParam ,这样明确了,执行该行为的回调函数时 到底含有哪一些参数

BaseBehavior.class参考如下(未来将会内置到 CMS 中):


<?php

namespace Common\BehaviorParam;
/**
 * 行为回调参数
 *
 */
class BaseBehaviorParam {
    function __get($name) {
        return $this->$name;
    }
    function __set($name, $value) {
        $this->$name = $value;
    }
    /**
     * 创建参数实例
     * @param array $data
     * @return mixed
     */
    static function create(array $data) {
        $class = __CLASS__;
        $param = new $class;
        foreach ($data as $key => $val){
            if(empty($param->$key)){
                $param->$key = $val;
            }
        }
        return $param;
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文