PHP 对象已设置和/或为空

标签 php object isset

有没有办法检查对象是否有任何字段?例如,我有一个 soap 服务器,我正在使用 soap 客户端查询,如果我调用 get 方法,我要么返回一个对象,其中包含定义我所做的 soap 查询的字段,否则我返回 object(stdClass)#3 (0 ) { }。

有没有办法判断对象是否有任何东西?

    public function get($id){
    try{
        $client = new soapclient($this->WSDL,self::getAuthorization());
        $result = $client->__soapCall('get', array('get'=> array('sys_id'=>$id)));
        if(empty($result)){$result = false; }

    }catch(SoapFault $exception){
        //echo $exception;      
        $result = false;
    } 
    return $result;
}//end get() 

此方法应返回一个对象或 false,而我只收到一个没有字段的对象或一个有字段的对象。

最佳答案

已更新以反射(reflect)当前行为,2012 年 5 月 30 日

empty() 曾经为此工作,但 empty() 的行为已经改变了好几次。与往常一样,php 文档始终是准确行为的最佳来源,这些页面上的评论通常提供了随时间变化的良好历史记录。如果要检查是否缺少对象属性,目前一个非常防御的方法是:

if (is_object($theObject) && (count(get_object_vars($theObject)) > 0)) {
    ...

关于PHP 对象已设置和/或为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3450188/

相关文章:

javascript - 如何将 Object.keys().map() 函数中的参数设置为新对象中的键?

isset() 的 PHP 简写?

php - "isset construct"有快捷方式吗?

{} 符号中的 PHP 变量变量

javascript - 如何使用 html canvas 将 SVG 图形导出为 pdf

PHP/MySQL : Why is my query only returning the first row?

php - @if (Auth::user() == $image->user_id) 不起作用,即使登录用户的 id 为 1 并且 $image->user_id 也有 id 1

java - obj1 == obj2 实际上比较什么

javascript - 我创建的类不导出对象

!isset() 与 === null 的 PHP 性能