matthew-p/yii2-di-magic

对Yii2的改进,增加动作方法中的依赖注入并提供模型绑定。

安装次数: 686

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:yii2-extension

2.0.1 2018-03-29 09:59 UTC

This package is auto-updated.

Last update: 2023-08-19 22:54:18 UTC


README

对Yii2的改进,增加动作方法中的依赖注入并提供模型绑定。

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一:

php composer.phar require --prefer-dist matthew-p/yii2-di-magic "*"

或者将以下内容添加到您的 composer.json 文件的 require 部分:

"matthew-p/yii2-di-magic": "*"

使用方法

扩展安装完成后,只需在您的代码中简单使用即可:

在 main.php 配置中添加

return [
    ...
        'container'  => [
            'definitions' => [
                ARModel::class  =>  DIClassBuilder::bind([
                    'className'     => ARModel::class,     // optional
                    'requestFields' => ['id', 'model_id'], // array request fields (find by primaryKey)
                    'errorMessage'  => Yii::t('app', 'Model not found'),
                ]);
                
                ARModel2::class  => DIClassBuilder::bind([
                    'requestFields' => ['requestField' => 'modelColumn', 'requestField2' => 'modelColumn', 'requestFiled'], // find by primary key or modelColumn
                    'errorMessage'  => Yii::t('app', 'Model not found'),
                ]);
                
                ARModel3::class  => DIClassBuilder::bind(); // find by id default
            ],
        ],
    ...
];

并使用

class ModelController extends Controller
{
    use ActionDITrait;

    /**
     * View model.
     *
     * @param  ARModel $model
     *
     * @return string
     * @throws NotFoundHttpException
     */
    public function actionView(ARModel $model): string
    {
        // A search was made in the database. var_dump($model);
        ...
              
        // Get empty model
        $duplicateModel = Yii::$container->get(ARModel::class);
    }
    
    /**
     * Sample action.
     *
     * @param  ARModel|NULL $model not required
     *
     * @return void
     */
    public function actionSample(ARModel $model = NULL): void
    {        
        if (is_null($model)) {
            // 
        }
    }
}

运行: /model/view?id=1 或 /model/view?model_id=1 或 /model/sample?id=99999

就这么多。检查一下。