为什么我不能在stdClass上调用property_exists?

时间:2013-02-01 21:06:04

标签: php object field stdclass

这是我的代码:

<?php

$madeUpObject = new \stdClass();
$madeUpObject->madeUpProperty = "abc";

echo $madeUpObject->madeUpProperty;
echo "<br />";

if (property_exists('stdClass', 'madeUpProperty')) {
    echo "exists";
} else {
    echo "does not exist";
}
?>

输出是:

ABC 不存在

那为什么这不起作用?

3 个答案:

答案 0 :(得分:13)

尝试:

if( property_exists($madeUpObject, 'madeUpProperty')) {

指定类名(而不是我已经完成的对象)意味着在stdClass定义中,您需要定义属性。

您可以从this demo看到它打印出来:

abc
exists 

答案 1 :(得分:5)

因为stdClass没有任何属性。您需要传递$madeUpObject

property_exists($madeUpObject, 'madeUpProperty');

function's prototype如下:

bool property_exists ( mixed $class, string $property )

$class参数必须是“类名或类的对象”。 $property必须是该媒体资源的名称。

答案 2 :(得分:2)

除非您关注NULL值,否则可以使用isset保持简单。

相关问题