использовать функцию __construct () для статических функций?

Я хочу использовать этот способ, но у меня есть проблема, function __construct() не работает? Зачем ?

class user{

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

static function say_hi(){

echo HI ;
}
}

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

0

Решение

Вы должны создать новый экземпляр класса user внутри say_hi() метод. Когда вы создаете экземпляр внутри say_hi() метод, он вызовет метод конструктора и впоследствии определит константу HI,

Итак, ваш код должен быть таким:

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

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

user::say_hi();

Выход:

hello
0

Другие решения

Конструктор вызывается только при инициализации класса, например $user = new user();, При вызове статической функции класс не инициализируется, поэтому конструктор не вызывается.

0

Вы можете сделать это, только если у вас есть Версия PHP> = 7

class User{

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

static function say_hi(){

echo HI ;
}
}

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