对于PHP开发者来说,估计都看到过StdClass这样的一个类,比如当我们用print_r去打印出一个对象的时候;对于StdClass似乎没有其他作用,如果所有的Class都应该存在于一个默认的层级中的话,那么最顶层应该是最为一般的Class,也就是说极为抽象的,每一个下层的Class均比其上层的Class(即父类)更加专门化。基于该思想,在PHP中,这个顶层的Class被命名为"stdClass",且作为一个"Standard Class",你可以把它看成是一个不含任何属性和方法的类。 使用stdClass的目的: 在运行时添加属性到基对象(Base Object) 问题 你想创建一个对象,并在其中添加一些属性,但是你却不想把它作为一个明确的类正式地定义它。这一点在一些情况下是相当有用的,例如当你定义了一个方法来返回带有某些属性(不确定的)的对象时,如通过 mysql_fetch_object( ) 返回结果集对象的时,对某些属性不确定是否存在,又不想一个个isset检验的时候。 解决方案 使用PHP内建类,stdClass ,例如: <?php $sql="SELECT name,email FROM users WHERE id=$id"; $dbh=mysql_query($sql); $obj=mysql_fetch_object($dbh); if(!$obj) $obj=new StdClass; $array=array( 'name'=>$obj->name, 'email'=>$obj->email );最后, 这种在运行时为一个空对象设置属性的用法,不难看出也会给我们带来一些问题,如你无法真正确定这个对象是谁,目的是什么。
文章来源 CODETC,欢迎分享,转载请注明地址:
http://www.codetc.com/article-216-1.html
|