Я хочу использовать этот способ, но у меня есть проблема, function __construct()
не работает? Зачем ?
class user{
function __construct(){
define('HI', 'hello');
}
static function say_hi(){
echo HI ;
}
}
user::say_hi();// Out put should be : hello
Вы должны создать новый экземпляр класса 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
Конструктор вызывается только при инициализации класса, например $user = new user();
, При вызове статической функции класс не инициализируется, поэтому конструктор не вызывается.
Вы можете сделать это, только если у вас есть Версия PHP> = 7
class User{
function __construct(){
define('HI', 'hello');
}
static function say_hi(){
echo HI ;
}
}
(new User())::say_hi();