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 【转】相关推荐
- PHP5中的stdClass
PHP5中新增stdClass 官方手册参考:http://www.php.net/manual/en/language.oop5.basic.php#92123 stdClass类是PHP的一个内部 ...
- php 文件迭代对象,通过PHP中的stdClass对象进行迭代
我有一个这样的对象: stdClass Object ( [_count] => 10 [_start] => 0 [_total] => 37 [values] => Arr ...
- PHP中遍历stdclass object 及 json 总结[中国航天神舟十号以json形式向地面返回数据]...
$test=Array ( [0] => stdClass Object ( [tags] => 最快的车,Bloodhound,SSC [id] => 48326888 11 从网 ...
- 浅析php中的stdClass
在php的开发过程中(php5以后),我们经常会遇到stdClass这个类,现在就顺便说一下我对stdClass的认识: $user = new stdClass(); $user->name ...
- php 读取stdclass,json - 在php中读取stdclass的问题?
例如: array(3) { [0]=> object(stdClass)#6 (2) { ["id"]=> string(1) "1" [&quo ...
- PHP中把stdClass Object转array的几个方法
2019独角兽企业重金招聘Python工程师标准>>> 方法一: //PHP stdClass Object转array function object_array($array) ...
- php stdclass,php中new stdclass()用在什么场景
我常用在保存数据 主要是开销比较小 $obj = new stdClass; $obj->test = 'abc'; $obj->other = 6.2; $obj->arr = a ...
- php里的stdclass,PHP中的stdClass是什么?
stdClass是另一个很好的PHP特性.您可以创建一个匿名PHP类.让我们检查一个例子.$page=new stdClass();$page->name='Home';$page->st ...
- PHP的stdClass
概述 以下是百度百科对php中的 stdClass的描述: stdClass在PHP5才开始被流行.而stdClass也是zend的一个保留类.**stdClass类是PHP的一个内部保留类,初始时没 ...
最新文章
- 【HeadFirst设计模式】8.模板方法模式
- 拜占庭将军问题与中本聪
- 476. 数字的补数 【位运算】
- iOS经典面试题之深入分析“内存平移”的原理
- Redis 缓存常见问题 :缓存雪崩,缓存击穿,缓存穿透,缓存预热
- 收藏 : 50个Excel逆天功能,一秒变“表哥”
- mathcal 对应于什么库_数据库理论
- MySql8.0.11的安装与使用
- Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】
- git bitbucket_如何在Bitbucket上创建新的Git存储库并查看提交的对象
- oracle blob 限制大小_Oracle的INSTANCE CAGING在数据库资源池中的作用
- 临近失业,如何拯救自己?
- 听歌用什么降噪耳机好?骑行抗风噪最好的蓝牙耳机
- 《你的善良必须有点锋芒》-慕言歌
- java编程兔子问题_JAVA编程题-用java解决兔子问题
- 中级响应代表什么事件_15万预算,能买到合格的中级轿车吗?
- java实现弹幕效果_css3实现蒙版弹幕功能
- js-js数据结构和算法-树
- 【Keil】Error: Flash Download failed - Target DLL has been cancelled
- 某MDU产品OMCI软件升级加速方案