沃梦达 / 编程问答 / php问题 / 正文

属性存在,但Property_Existes()返回FALSE;

Property exists but property_exists() return false;(属性存在,但Property_Existes()返回FALSE;)

本文介绍了属性存在,但Property_Existes()返回FALSE;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗯,我真的很困惑。 当我检查属性是否存在时,它返回FALSE。

if (property_exists($pais, 'id'))
// false

但当我调试时,它会显示它在那里。

print_r($pais->id);
// 1
print_r(property_exists($pais, 'id'));
// false

是我疯了还是我的神经元被烧坏了?

,PAI的创建由

完成
if (key_exists('country', $data))
    $pais = Pais::adicionarPais($data);

(...) 

public static function adicionarPais(array $data)
{
    return Pais::firstOrCreate(['nome' => $data['country']]);
}

推荐答案

我看到您使用的是Laravel,所以我猜这是很有说服力的模型。他们可能正在使用神奇的方法从您的数据库列创建动态属性和方法。请看这里:http://php.net/manual/en/language.oop5.overloading.php

因此,每次您请求属性时,它们将检查是否有任何列或关系,并返回该列或关系,而不是具有实际属性。

您可以使用getAttributes()方法(https://github.com/illuminate/database/blob/master/Eloquent/Concerns/HasAttributes.php#L851)

获取模型属性
class Pais
{
    public function __get($name) {
        if ($name == 'id') {
            return 1;
        }
    }
}
$pais = new Pais();
var_dump($pais->id); // int(1)
var_dump(property_exists($pais, 'id')); // bool(false)

这篇关于属性存在,但Property_Existes()返回FALSE;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:属性存在,但Property_Existes()返回FALSE;

基础教程推荐