gpt4 book ai didi

php - 注意 : Use of undefined constant self - assumed 'self' , 当把 property_exists 作为第一个参数时

转载 作者:可可西里 更新时间:2023-11-01 13:24:29 25 4
gpt4 key购买 nike

我正在尝试使用 self 而不是在 propery_exists 函数中键入类名,如下所示:

private static function instantiate($record){
$user = new self;
foreach($record as $name => $value){
if(isset($user->$name) || property_exists(self, $name)){
$user->$name = $value;
}
}
return $user;
}

但是当我运行这个脚本时出现错误:

Notice: Use of undefined constant self - assumed 'self' in /var/www/photo_gallery/includes/User.php on line 36

第 36 行是调用 property_exists 方法的行。

当我将 self 更改为 User(类名)时。它工作得很好。

我想知道为什么使用 self 会发出这样的通知? self 不是指类吗?

最佳答案

使用self 来引用当前类。 不是类名

尝试使用魔术常量:

if(isset($user->$name) || property_exists(__CLASS__, $name)){

来自 php 手册:__CLASS__

类名。 (在 PHP 4.3.0 中添加)从 PHP 5 开始,该常量返 echo 明时的类名(区分大小写)。在 PHP 4 中,它的值总是小写的。类名包括它在其中声明的 namespace (例如 Foo\Bar)。请注意,从 PHP 5.4 开始,CLASS 也适用于特征。在特征方法中使用时,CLASS 是使用特征的类的名称。

PHP Manual

一个例子:

class Test {
public function __construct(){
echo __CLASS__;
}
}

$test = new Test();

输出:

Test

关于php - 注意 : Use of undefined constant self - assumed 'self' , 当把 property_exists 作为第一个参数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18406706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com