欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

PHP中的stdClass 【转】

发布时间:2023/12/10 php 62 豆豆
生活随笔 收集整理的这篇文章主要介绍了 PHP中的stdClass 【转】 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

  如果所有的Class都应该存在于一个默认的层级中的话,那么最顶层应该是最为一般的Class,也就是说极为抽象的,每一个下层的Class均比其上层的Class(即父类)更加专门化。基于该思想,在PHP中,这个顶层的Class被命名为“stdClass”,且作为一个“Standard Class”,你可以把它看成是一个不含任何属性和方法的类。

 

使用stdClass的目的: 在运行时添加属性到基对象(Base Object)

  • 问题
    你想创建一个对象,并在其中添加一些属性,但是你却不想把它作为一个明确的类正式地定义它。这一点在一些情况下是相当有用的,例如当你需要定义一个方法来返回带有某些属性(不确定的)的对象时,就如同从mysql_fetch_object( ) 或者 imap_header( )的使用一样。
  • 解决方案
    使用PHP内建类,stdClass:
    [php] view plaincopyprint?
  • $pickle = new stdClass;
  • $pickle->type = 'fullsour';
  • $pickle = new stdClass; $pickle->type = 'fullsour';
  • 讨论
    创建一个stdClass类型的对象,其不含有任何属性和方法,就像array( )返回一个空数组一样。
    你可以为其创建一个新的属性并分配给它某个值,然后检查它的值。
    [php] view plaincopyprint?
  • $guss = new stdClass;
  • $guss->location = 'Essex';
  • print "$guss->location/n";
  • $guss->location = 'Orchard';
  • print "$guss->location/n";
  • $guss = new stdClass; $guss->location = 'Essex'; print "$guss->location/n"; $guss->location = 'Orchard'; print "$guss->location/n";
    方法,无论如何在一个对象被初始化之后再去定义它。但是在你想使用一个像从数据库结果集中提取出来的对象(mysql_fetch_object方法,毕竟在调用它是你并不像真正地去请求数据库)这样的一般对象时,创建 stdClass 对象是非常有用的。如下:
    [php] view plaincopyprint?
  • function pc_format_address($obj) {
  • return "$obj->name <$obj->email>";
  • }
  • $sql = "SELECT name, email FROM users WHERE id=$id";
  • $dbh = mysql_query($sql);
  • $obj = mysql_fetch_object($dbh);
  • print pc_format_address($obj);
  • function pc_format_address($obj) { return "$obj->name <$obj->email>"; } $sql = "SELECT name, email FROM users WHERE id=$id"; $dbh = mysql_query($sql); $obj = mysql_fetch_object($dbh); print pc_format_address($obj);
    pc_format_address方法使用一个对象的name 和 email 属性,然后使其格式化后返回(如上代码)。下面我们不调用mysql_fetch_object方法,应该如何使用呢?
    [php] view plaincopyprint?
  • $obj = new stdClass;
  • $obj->name = 'Adam Trachtenberg';
  • $obj->email = 'adam@example.com';
  • print pc_format_address($obj);
  • $obj = new stdClass; $obj->name = 'Adam Trachtenberg'; $obj->email = 'adam@example.com'; print pc_format_address($obj);
  • 最后, 这种在运行时为一个空对象设置属性的用法,不难看出也会给我们带来一些问题,如你无法真正确定这个对象是谁,目的是什么。http://blog.csdn.net/crazyjeff_liu/article/details/4046070
  • 转载于:https://www.cnblogs.com/ellisonDon/archive/2012/11/19/2777010.html

    总结

    以上是生活随笔为你收集整理的PHP中的stdClass 【转】的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。