博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中的stdClass 【转】
阅读量:4089 次
发布时间:2019-05-25

本文共 1833 字,大约阅读时间需要 6 分钟。

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

 

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

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

你可能感兴趣的文章
7 年工作经验,面试官竟然还让我写算法题???
查看>>
被 Zoom 逼疯的歪果仁,造出了视频会议机器人,同事已笑疯丨开源
查看>>
上古语言从入门到精通:COBOL 教程登上 GitHub 热榜
查看>>
哈哈哈哈,「00 后黑话破解器」火爆 GitHub,这波操作我给满分!
查看>>
再见,Eclipse...
查看>>
超全汇总!B 站上有哪些值得学习的 AI 课程...
查看>>
网络协议那些事儿,每一个程序员的必备知识,这次终于理顺了!
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
神器面世:让你快速在 iOS 设备上安装 Windows、Linux 等操作系统!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
新加坡总理的儿子,写了一本计算机入门书籍...
查看>>
教你如何用 19 行代码搭建一个女朋友!
查看>>
学不会设计模式,是因为你还没用过这个神奇的网站!
查看>>
用 Python 写出 Gameboy 模拟器,这位丹麦小哥的大学项目火了!
查看>>
GitHub 热榜:人像卡通化!
查看>>
如果你觉得学习 Git 很枯燥,那是因为你还没玩过这款游戏!
查看>>
太赞了,《快乐学 Pandas》中文教程已正式开源!
查看>>
未来 10 年,软件开发技术的 8 个发展趋势
查看>>
GitHub 标星 2.3w+!这个开源的 Java 网络通信框架究竟有多牛逼...
查看>>
GitHub 热榜:用 Zoom 开会很无聊?赶紧试下这个会议换脸神器!
查看>>