灵活运用PHP stdClass
创始人
2024-06-14 07:10:53
0

PHP stdClass对于初学PHP语言的朋友来说还不是很了解。下面我们就来具体讲解一下有关PHP stdClass的应用方法,希望对大家有所帮助。#t#

一维数组,我现在特别喜欢把它写成对象,因为键盘打起来比较顺手,看起来也顺眼,如

 

  1. $andy = array();  
  2. $andy['a'] = 1;  
  3. $andy['b'] = 2;  
  4. $andy['c'] = 3; 

我喜欢把它变成这样

 

  1. $andy = array();  
  2. $andy = (object)$andy;  
  3. $andy->a = 1;  
  4. $andy->b = 2;  
  5. $andy->c = 3;  

 

新建空数组只要$andy = array();
新建空对像却要$andy = new Andy; 而且还得先有个class Andy{}
或者得2行

 

  1. $andy = array();  
  2. $andy = (object)$andy; 

用array直接改类型成object有点别扭,今天找到了答案,感谢phpx的兄弟

PHP stdClass的介绍

 

  1. $user = new stdClass();  
  2. $user->name = 'gouki';  

 

这样的代码,这是干嘛用的呢?

翻开手册,搜索stdClass,你会发现,手册上几乎没有介绍,如果你再次搜索google,看到的也几乎全是英文解释。
其实,stdClass在PHP5才开始被流行。而PHP stdClass也是zend的一个保留类。似乎没有其他作用。也几乎没有任何说明。

或者,我们可以这么理解:PHP stdClass是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。
凡时用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。

或者,我们可以又这么理解一下,正因为PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。

例如:

 

  1. $user = new stdClass();  
  2. $user->name = 'gouki';  
  3. $myUser = $user;  
  4. $myUser->name = 'flypig'

如果在PHP4时代,这样的代码就是在消耗系统资源。因为:

$myUser = $user;

这是创建了一个拷贝。所以,在PHP4的时候,都是这样使用:

$myUser = & $user;

有人说,为什么不用数组呢?数组不是更方便吗?而且对于PHP这样的弱类型程序来说,用数组应该是最方便的。
确实。数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(这个是听人说来的,我没有测试……也不知道怎么测试,如果有人知道,请告诉我,谢谢 )
不过SPL的标准类库里,还有一个函数arrayobject,可以直接将数组转化为对象这也是一个好办法哦。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...