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();
这样,在包含类文件时将进行初始化。通过使用自动加载,您可以确保仅在必要时(并且仅发生一次)发生这种情况。