PHP中的stdClass 【转】

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

 

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

  1. 问题
    你想创建一个对象,并在其中添加一些属性,但是你却不想把它作为一个明确的类正式地定义它。这一点在一些情况下是相当有用的,例如当你需要定义一个方法来返回带有某些属性(不确定的)的对象时,就如同从mysql_fetch_object( ) 或者 imap_header( )的使用一样。
  2. 解决方案
    使用PHP内建类,stdClass:
    [php] view plaincopyprint?
    1. $pickle = new stdClass;
    2. $pickle->type = 'fullsour';
    $pickle = new stdClass; $pickle->type = 'fullsour';
  3. 讨论
    创建一个stdClass类型的对象,其不含有任何属性和方法,就像array( )返回一个空数组一样。
    你可以为其创建一个新的属性并分配给它某个值,然后检查它的值。
    [php] view plaincopyprint?
    1. $guss = new stdClass;
    2. $guss->location = 'Essex';
    3. print "$guss->location/n";
    4. $guss->location = 'Orchard';
    5. 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?
    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);
    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?
    1. $obj = new stdClass;
    2. $obj->name = 'Adam Trachtenberg';
    3. $obj->email = 'adam@example.com';
    4. print pc_format_address($obj);
    $obj = new stdClass; $obj->name = 'Adam Trachtenberg'; $obj->email = 'adam@example.com'; print pc_format_address($obj);
  4. 最后, 这种在运行时为一个空对象设置属性的用法,不难看出也会给我们带来一些问题,如你无法真正确定这个对象是谁,目的是什么。http://blog.csdn.net/crazyjeff_liu/article/details/4046070

转载于:https://www.cnblogs.com/ellisonDon/archive/2012/11/19/2777010.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机仿真技术-基于matlab的电子信息类课程课后答案,计算机仿真技术:基于MATLAB的电子信息类课程(第4版)...

目 录第1章 MATLAB语言概述\t11&#xff0e;1 MATLAB语言及特点\t11&#xff0e;2 MATLAB的工作环境\t21&#xff0e;2&#xff0e;1 MATLAB系统的安装\t21&#xff0e;2&#xff0e;2 MATLAB系统的启动\t21&#xff0e;2&#xff0e;3 MATLAB的命令窗口\t31&#xff0e;2&…

UVa11137 Ingenuous Cubrency

原题传送&#xff1a;http://uva.onlinejudge.org/external/111/11137.html 递推&#xff0c;动态规划。 d[i][j]表示使用不超过i的 i 的整数的立方&#xff0c;累加和为 j 的方案数。 则有状态转移方程&#xff1a; d[i][j] d[i - 1][j] d[i][j - i3]。 初始条件d[0][0] 1;…

php jquery模板替换图片,仿jquery插件官网头像更换(原创)

插件描述&#xff1a;一款简单实用的头像更换插件内附有ajax无刷新代码使用方法发布时间&#xff1a;2018-1-25 23:41首先引入jquery:js$(".close,.gb").click(function(){$(".pic_box").animate({top:-1000px},500);}),$(".my_box").click(func…

展示29个美丽的iPhone壁纸

寻找一些最优秀的iPhone壁纸是我们经常要做的工作&#xff0c;iphone的壁纸总是那么好看&#xff0c;关注我博客的人会知道&#xff0c;我经常会发布一些精美的壁纸奉献给大家&#xff0c;今天就发布我精心收藏的美丽壁纸集合&#xff0c; Mind Tree Time & Space TJR Typo…

oracle不属于集合操作,Oracle的几个集合操作

Oracle的几个集合操作Union&#xff0c;对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;同时进行默认规则的排序&#xff1b;Union All&#xff0c;对两个结果集进行并集操作&#xff0c;包括重复行&#xff0c;不进行排序&#xff1b;Intersect&#xff0c;对两…

大固其其

那一年我忽然很不好&#xff0c;每天都觉得很困&#xff0c;很困。无论怎么样子眼睛都睁不开&#xff0c;实在没有办法了。于是我辞掉了生活&#xff0c;坐上长途汽车&#xff0c;回到了最北方的乡下奶奶家。奶奶家有一铺炕&#xff0c;很暖很暖。我一扔下包就爬上去睡着了&…

oracle错误12637,TNS-12537 TNSconnection closed ORA-609错误处理

起因&#xff1a;最近研发反应JDBC和PL/SQL工具连接过慢&#xff0c;昨天事情多懒得去管今早检查alter.log后发现报错Fatal NI connect error12637, connecting to:(LOCALNO)VERSIONINFORMATION:TNS for Linux: Version 11.2.0.1.0 - ProductionOracle Bequeath NT Protocol Ad…

用luasocket读取双色球中奖号码

其实是蛮简单的一个功能&#xff0c;就是读取这个页面&#xff1a;http://61.129.89.226/fcopen/cp_kjgg_dfw.jsp?lottery_typessq&lottery_issue2012138&#xff0c; 把某一个期的中奖号码抽取出来。 【luarocks安装library】 首先&#xff0c;如果是想用某个库&#xff…

dedecms更改php目录名称,dedecms修改专题目录名称(路径)

织梦DEDECMS模板的默认专题路径是/special/织梦模板这个感觉还是有些长了&#xff0c;怎么自定义这个路径名称呢&#xff1f;比如我们需要改为/s/&#xff0c;我们可以使用下面的方法来修改&#xff1a;1、首先&#xff0c;我们找到文件/include/common.inc.php的139行&#xf…

linux 下zip文件的压缩和解压

压缩&#xff1a;zip 解压&#xff1a;unzip tar.gz 解压&#xff1a;tar -xvfz filename转载于:https://www.cnblogs.com/bjdxy/archive/2012/11/26/2789170.html

oracle中xml如何存储过程,oracle存储过程生成xml文件

oracle存储过程生成xml文件CREATE OR REPLACE PROCEDURE Pro_OracleToXML(personid varchar2,name varchar2,address varchar2,tel varchar2,ip varchar2,email varchar2)ASisql varchar2(200);--创建临时表dptable varchar2(100);--删除临时表i_insert varchar2(200);--将数据…

查看linux的用户

cat /etc/passwd |cut -f 1 -d :转载于:https://www.cnblogs.com/gaohuag/archive/2012/11/28/2792724.html

oracle查看列状态unused,Oracle9i下将列设为UNUSED时的系统行为

下面以例子说话&#xff1a;SQL> create table test1.unused_test as select rownum a,rownum*2 b,rownum*10 c from dba_objects where rownum<100;Table created.看看数据字典&#xff1a;SQL> select column_name,data_type,column_id,hidden_column,segment_colu…