PHP 中的静态类初始值设定项

2022-08-30 07:28:18

我有一个带有一些静态函数的帮助器类。类中的所有函数都需要一个“重”初始化函数才能运行一次(就好像它是构造函数一样)。

有没有实现这个目标的良好做法?

我唯一想到的是调用一个函数,如果它已经运行了一次(使用静态var),则中断它的流。问题是我需要在类的每个函数上调用它。init$initialized


答案 1

听起来最好由单个实例而不是一堆静态方法为您服务

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();

答案 2
// file Foo.php
class Foo
{
  static function init() { /* ... */ }
}

Foo::init();

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


推荐