先贴出代码:
<?phpclass c_Test {



}$o_Object=new c_Test();
if (empty($o_Object)) {

echo 'NO';

}else {

echo 'YES';

}?>为什么,输出结果为:YES函数手册上说,empty()面对空对象,会返回:true

解决方案 »

  1.   

    $o_Object=new c_Test()
    你用这句之后,$o_Object这是一个对象,永远不会为空,和类是否为空无关。你可以var_dump($o_Object)看看
      

  2.   

    嗯, 中文手册又滞后了....
    看英文手册:
    http://php.net/manual/en/function.empty.phpchangelog部分:5.0.0 Objects with no properties are no longer considered empty.
    从5.0.0起,无属性的对象不再认为是空的
      

  3.   

    if(!isset($o_Object)){
           echo 'NO';
    }这样;
    empty 并不是指 一个变量是空直 而是指变量没赋值
      

  4.   


    empty与isset()的区别<?php
    $var = 0;// 结果为 true,因为 $var 为空
    if (empty($var)) {  
        echo '$var is either 0 or not set at all';
    }// 结果为 false,因为 $var 已设置
    if (!isset($var)) { 
        echo '$var is not set at all';
    }
    ?> 
      

  5.   

    对象里面还有你看不见的方法呢,比如__construct、__set、__get等等