我需要一个静态构造函数。我一直在想为什么不支持这个功能。
我需要在加载类时运行一次函数,目前我已经看到它完成的方式是在类声明之后在文件中包含一堆代码。这种方法有效,直到你需要修改类的受保护或私有成员,然后你需要在类本身上定义一个函数,然后从那里调用它,所有这些都完成了工作,但对我来说似乎很烦人。
我在前面做过的事情是在我的加载器类之后的include语句中添加了这一点:
if (method_exists($class, 'onLoad')) {
$class::onLoad();
}
但是,我对此表示怀疑,因为请求中可能包含了很多类。这是在每个请求上,所以最终这个可能会累加到一些处理器时间 - 这引出了我想问的问题,因为没有多少类甚至会有一个onLoad
方法:
您认为这是对我的框架的合理补充吗?
编辑:关于建议的可能重复的问题 - 我不是要求单例这不是一个静态类,它可以自由地实例化。
答案 0 :(得分:3)
没有理由你的“SomeClass.class.php”文件看起来不像这样:
class SomeClass {
public static function onLoad() {
// ...
}
// ...
}
SomeClass::onLoad();
这是否是一个好主意是有争议的,但我没有看到以这种方式添加到类文件的初始化代码有任何过分错误。