一尘不染

是否可以在PHP中创建静态类(例如在C#中)?

php

我想在PHP中创建一个静态类,并使其行为像在C#中一样,所以

  1. 在第一次调用类时会自动调用构造函数
  2. 无需实例化

这种东西…

static class Hello {
    private static $greeting = 'Hello';

    private __construct() {
        $greeting .= ' There!';
    }

    public static greet(){
        echo $greeting;
    }
}

Hello::greet(); // Hello There!

阅读 283

收藏
2020-05-29

共1个答案

一尘不染

您可以在PHP中拥有静态类,但它们不会自动调用构造函数(如果尝试调用self::__construct(),则会收到错误)。

因此,您必须创建一个initialize()函数并在每个方法中调用它:

<?php

class Hello
{
    private static $greeting = 'Hello';
    private static $initialized = false;

    private static function initialize()
    {
        if (self::$initialized)
            return;

        self::$greeting .= ' There!';
        self::$initialized = true;
    }

    public static function greet()
    {
        self::initialize();
        echo self::$greeting;
    }
}

Hello::greet(); // Hello There!


?>
2020-05-29