国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

定時(shí)任務(wù)無法使用注解依賴注入

leung

問題描述

定時(shí)任務(wù)代碼使用注解依賴注入的數(shù)據(jù)庫模型會報(bào)錯(cuò),只能使用構(gòu)造函數(shù)的方式進(jìn)行依賴注入

class Task
{
    public function onWorkerStart()
    {
        //調(diào)用模型查詢
        $taskList = (new Crontab())->select();
        foreach ($taskList as $item) {
            new Crontab($item->rule, function () use ($item) {
                $this->run($item);
            });
        }
    }

    public function run($args)
    {
        echo $args->name.'任務(wù)開始調(diào)用:'.date('Y-m-d H:i:s')."\n";
        //執(zhí)行定時(shí)任務(wù)
        $service = new CrontabService();
        $result = $service->run($args->id);
        if ($result) {
            echo $args->name.'任務(wù)調(diào)用成功:'.date('Y-m-d H:i:s')."\n";
        } else {
            echo $args->name.'任務(wù)調(diào)用失?。?.date('Y-m-d H:i:s')."\n";
        }
    }
}
class CrontabService extends BaseService
{
    //只能用構(gòu)造函數(shù),可以正常執(zhí)行
    public function __construct()
    {
        $this->model = new Crontab();
    }

    //注解注入會報(bào)find方法找不到錯(cuò)誤
    /**
     * @Inject
     * @var Crontab
     */
    protected $model;

    public function run($id)
    {
        //THINK ORM find方法查詢
        $info = $this->model->find($id);

        ...
    }

}
585 1 0
1個(gè)回答

yongdao35

必須是由框架或者php-di創(chuàng)建的實(shí)例才能完成依賴自動注入,手動new的實(shí)例無法完成依賴自動注入,如需注入,需要使用support\Container接口替換new語句

文檔說的,自己new的類不支持注入

//執(zhí)行定時(shí)任務(wù)
$service = new CrontabService();

你的代碼明顯是自己new的,不是容器創(chuàng)建的

  • 暫無評論
??