是否可以让 Yii2 在执行 php init 时调用一个函数?
Is it possible to make Yii2 call a function when executing php init?
我想知道在Yii2中是否可以在执行php init
命令时自动调用一个函数?
我有一个 component/extension,它有一个函数,我只想在 Yii2 应用程序初始化时调用它。这个函数是否可以在任何地方注册以便自动调用,甚至可以吗?
init(Yii 应用程序初始化工具)仅适用于高级应用程序模板,并以过程式风格(非 OOP)编写。
遗憾的是,init
不会引发任何事件,因此您无法添加任何事件处理程序来执行自定义代码。
解决问题的最简单方法是修改 init
文件本身,但这不是好的做法,因为更改可能会在框架更新时丢失(文件包含在 git 中的可跟踪文件中框架核心)。
我的建议是 create separate console command 处理并在 php init
之后立即执行:
php init your-custom-console-controller/action-name
如果您正在使用部署工具,例如 Deployer,您可以轻松地添加您的自定义命令,以便在初始化后立即执行。
Yii2 高级应用程序模板的配方exists,因此您可以像这样添加自定义命令:
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
忘记部署项目所需的一切。
绝对推荐花点时间学习,值得。
我想知道在Yii2中是否可以在执行php init
命令时自动调用一个函数?
我有一个 component/extension,它有一个函数,我只想在 Yii2 应用程序初始化时调用它。这个函数是否可以在任何地方注册以便自动调用,甚至可以吗?
init(Yii 应用程序初始化工具)仅适用于高级应用程序模板,并以过程式风格(非 OOP)编写。
遗憾的是,init
不会引发任何事件,因此您无法添加任何事件处理程序来执行自定义代码。
解决问题的最简单方法是修改 init
文件本身,但这不是好的做法,因为更改可能会在框架更新时丢失(文件包含在 git 中的可跟踪文件中框架核心)。
我的建议是 create separate console command 处理并在 php init
之后立即执行:
php init your-custom-console-controller/action-name
如果您正在使用部署工具,例如 Deployer,您可以轻松地添加您的自定义命令,以便在初始化后立即执行。
Yii2 高级应用程序模板的配方exists,因此您可以像这样添加自定义命令:
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
忘记部署项目所需的一切。
绝对推荐花点时间学习,值得。