将函数 __construct() 用于静态函数?

use function __construct() for static functions?

我想使用这种方式,但我遇到了问题,function __construct() 不起作用?为什么?

class user{

  function __construct(){
    define('HI', 'hello');
  }

  static function say_hi(){

     echo HI ;
  }
}

user::say_hi();// Out put should be : hello

构造函数仅在初始化 class 时调用,例如 $user = new user();。调用静态函数时,class 未初始化,因此未调用构造函数。

只有 PHP 版本 >= 7

才能这样做
class User{

  function __construct(){
    define('HI', 'hello');
  }

  static function say_hi(){

     echo HI ;
  }
}

(new User())::say_hi();

您必须在 say_hi() 方法中创建 class user 的新实例。当您在 say_hi() 方法中创建实例时,它将调用构造函数方法并随后定义常量 HI.

所以你的代码应该是这样的:

class user{
    function __construct(){
        define('HI', 'hello');
    }

    static function say_hi(){
        new user();
        echo HI ;
    }
}

user::say_hi();

输出:

hello