PHP 中的静态类初始值设定项
2022-08-30 07:28:18
我有一个带有一些静态函数的帮助器类。类中的所有函数都需要一个“重”初始化函数才能运行一次(就好像它是构造函数一样)。
有没有实现这个目标的良好做法?
我唯一想到的是调用一个函数,如果它已经运行了一次(使用静态var),则中断它的流。问题是我需要在类的每个函数上调用它。init
$initialized
我有一个带有一些静态函数的帮助器类。类中的所有函数都需要一个“重”初始化函数才能运行一次(就好像它是构造函数一样)。
有没有实现这个目标的良好做法?
我唯一想到的是调用一个函数,如果它已经运行了一次(使用静态var),则中断它的流。问题是我需要在类的每个函数上调用它。init
$initialized
听起来最好由单个实例而不是一堆静态方法为您服务
class Singleton
{
/**
*
* @var Singleton
*/
private static $instance;
private function __construct()
{
// Your "heavy" initialization stuff here
}
public static function getInstance()
{
if ( is_null( self::$instance ) )
{
self::$instance = new self();
}
return self::$instance;
}
public function someMethod1()
{
// whatever
}
public function someMethod2()
{
// whatever
}
}
然后,在使用中
// As opposed to this
Singleton::someMethod1();
// You'd do this
Singleton::getInstance()->someMethod1();
// file Foo.php
class Foo
{
static function init() { /* ... */ }
}
Foo::init();
这样,在包含类文件时将进行初始化。通过使用自动加载,您可以确保仅在必要时(并且仅发生一次)发生这种情况。