我真的很困惑。 当我检查属性是否存在时,它返回 false。
if (property_exists($pais, 'id'))
// false
但是当我调试时它显示它在那里。
print_r($pais->id);
// 1
print_r(property_exists($pais, 'id'));
// false
我是疯了还是我的神经元炸了?
而 pais 的创建是由
if (key_exists('country', $data))
$pais = Pais::adicionarPais($data);
(...)
public static function adicionarPais(array $data)
{
return Pais::firstOrCreate(['nome' => $data['country']]);
}
最佳答案
我看到你在使用 Laravel,所以我猜这是 Eloquent 模型。他们可能正在使用魔术方法从您的数据库列创建动态属性和方法。看这里: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)
关于php - 属性存在但 property_exists() 返回 false;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43011189/