yii2 container->set使用示例

 

复制代码
<?php
class TestController extends Controller
{
    public function actionIndex()
    {
        $order = [
            'id' => 1,
            'order_no' => 20201118
        ];
        $params = [
            'id' => 1,
            'name' => 'xiaoming'
        ];
        \Yii::$container->set(TestPay::class, TestOrder::class, [$params, $order]);
        \Yii::$container->invoke([$this, 'pay']);
        exit();
    }

    public function pay(TestPay $testPay)
    {
        $testPay->notify();
        $testPay->syncSms();
    }

}

abstract class TestPay
{
    public $params;
    public $order;

    public function __construct($params, $order)
    {
        $this->params = $params;
        $this->order = $order;
    }

    abstract function validate();

    abstract function notify();

    public function syncSms()
    {
        print_r('syncSms');
        echo PHP_EOL;
    }
}

class TestOrder extends TestPay
{
    public $params;
    public $order;

    public function __construct($params, $order)
    {
        parent::__construct($params, $order);
    }

    public function validate()
    {
        print_r('validate');
        echo PHP_EOL;
        print_r($this->params);
        echo PHP_EOL;
    }

    public function notify()
    {
        print_r('notify');
        echo PHP_EOL;
        print_r($this->order);
        echo PHP_EOL;
    }
}
复制代码

效果截图【/test/index】:

 

posted @   一个人的孤独自白  阅读(386)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2018-11-19 php 网站中文简体繁体转换类
点击右上角即可分享
微信分享提示