yii - 扩展 Yii2 的 BaseYii 类以添加静态方法
问题描述
是否可以扩展 Yii2 的 BaseYii 类,所以我可以添加一个类似于这样的静态方法Yii::t()
:Yii::my_super_method()
?
真的找不到任何有关此的文档,也许我错过了。
解决方案
这可以通过创建自己的Yii
类(例如在项目的根目录中)来实现:
require __DIR__ . '/vendor/yiisoft/yii2/BaseYii.php';
class Yii extends \yii\BaseYii
{
public static function my_super_method() {
// ...
}
}
spl_autoload_register(['Yii', 'autoload'], true, true);
Yii::$classMap = require __DIR__ . '/vendor/yiisoft/yii2/classes.php';
Yii::$container = new yii\di\Container();
并index.php
通过替换将其加载到核心类中:
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
和
require __DIR__ . '/../Yii.php';
但如果您只想添加一个新方法,您可能不应该这样做。以这种方式覆盖核心类是可能的,但这是丑陋的 hack,应尽可能避免。使用这种方法创建自己的助手比破解核心类更好。
推荐阅读
- if-statement - 如果行中的空白单元格数 = 某个数字,则突出显示整行
- kotlin - Kotlin中'let'关键字的目的是什么
- gcc - 在 64 位 ubuntu 上交叉编译 arm32bit 时 glib-2.0 的问题
- python - 如何在参数解析器中将路径传递到图像目录?
- visual-studio - 如何在 C++ 中创建 CMYK 模式图像?
- linux - 将命令树的结果导出到带有列的 csv 文件中
- mysql - 查询从具有添加约束的单个列中获取不同的对
- python - 以更有效的方式删除 blob 中的文件夹
- swiftui - SwiftUI PickerView 与工作回调如何?
- angular - Nebular - 登录后未正确获取令牌有效负载