将函数 __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
我想使用这种方式,但我遇到了问题,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