在执行php init时,是否可以使Yii2调用函数?

在执行php init时,是否可以使Yii2调用函数?,yii2,yii-extensions,yii2-advanced-app,yii-components,Yii2,Yii Extensions,Yii2 Advanced App,Yii Components,我想知道在Yii2中执行phpinit命令时是否可以自动调用函数 我有一个组件/扩展,它有一个我只想在初始化Yii2应用程序时调用的函数。此函数是否可以在任何位置注册,以便自动调用?是否可能?(Yii应用程序初始化工具)仅适用于高级应用程序模板,并以过程式(非OOP)编写 不幸的是,init不会引发任何事件,因此无法添加任何事件处理程序来执行自定义代码 解决此问题的最简单方法是修改init文件本身,但这不是一个好的做法,因为在框架更新时更改可能会丢失(文件包含在框架核心中的git可跟踪文件中)

我想知道在Yii2中执行
phpinit
命令时是否可以自动调用函数

我有一个组件/扩展,它有一个我只想在初始化Yii2应用程序时调用的函数。此函数是否可以在任何位置注册,以便自动调用?是否可能?

(Yii应用程序初始化工具)仅适用于高级应用程序模板,并以过程式(非OOP)编写

不幸的是,
init
不会引发任何事件,因此无法添加任何事件处理程序来执行自定义代码

解决此问题的最简单方法是修改
init
文件本身,但这不是一个好的做法,因为在框架更新时更改可能会丢失(文件包含在框架核心中的git可跟踪文件中)

我的建议是处理这个问题,并在
php init
之后立即执行它:

php init your-custom-console-controller/action-name
如果您使用的是部署工具,例如,您可以轻松地添加自定义命令,以便在init之后立即执行

Yii2高级应用程序模板的配方,因此您可以添加自定义命令,如下所示:

task('deploy:your_custom_command', function () {
    cd('{{release_path}}');    
    run('php yii your-custom-console-controller/action-name');
});

after('deploy:init', 'deploy:your_custom_command');
然后你就跑:

dep deploy production
忘记部署项目所需的一切

明确建议花些时间学习,这是值得的