繁体   English   中英

对静态函数使用函数__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

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

仅当您的PHP版本> = 7时,才可以这样做

class User{

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

  static function say_hi(){

     echo HI ;
  }
}

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

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

因此,您的代码应如下所示:

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

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

user::say_hi();

输出:

hello 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM