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

本教程将介绍属性存在,但Property_Existes()返回FALSE;的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

属性存在,但Property_Existes()返回FALSE; 教程 第1张

问题描述

嗯,我真的很困惑。
当我检查属性是否存在时,它返回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;的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。