PHP中的静态类初始化程序是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (26)

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

有没有一个很好的做法来实现这一目标?

我唯一想到的就是调用一个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();

这样,当包含类文件时就会进行初始化。你可以确保这只在必要时(并且只有一次)通过使用自动加载进行。

扫码关注云+社区