簡體   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