加载类时执行方法

php*_*_qq 2 php oop

我需要一个静态构造函数。我一直想知道为什么不支持这个功能。

我需要在加载类时运行一个函数,目前我所看到的方法是在类声明之后的文件中包含一堆代码。这有点有效,直到您需要修改类的受保护或私有成员,然后您需要在类本身上定义一个函数,然后从那里调用它,这一切都完成了工作,但对我来说似乎很老套。

我继续做的是在我的加载器类中,在包含语句之后我添加了一点:

if (method_exists($class, 'onLoad')) {
    $class::onLoad();
}
Run Code Online (Sandbox Code Playgroud)

不过,我对此表示怀疑,因为请求中可能包含相当多的类。这是针对每个请求的,所以最终这可能会增加一些处理器时间 - 这导致我想到我想问的问题,因为没有多少类甚至有一个onLoad方法:

您认为这是对我的框架的合理补充吗?

编辑:关于建议的可能重复问题 - 我不是要求单例,这不是一个静态类,它可以自由实例化。

Nie*_*sol 6

您的“SomeClass.class.php”文件没有理由不能如下所示:

class SomeClass {
    public static function onLoad() {
        // ...
    }
    // ...
}

SomeClass::onLoad();
Run Code Online (Sandbox Code Playgroud)

这是否是一个好主意还有待争论,但我认为以这种方式添加到类文件中的初始化代码没有任何太大的错误。