Andy's Blog » » stdClass的介绍

stdClass的介绍

stdClass的介绍

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

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

我喜欢把它变成这样

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

新建空数组只要$andy = array();
新建空对像却要$andy = new Andy; 而且还得先有个class Andy{}
或者得2行
$andy = array();
$andy = (object)$andy;
用array直接改类型成object有点别扭,今天找到了答案,感谢phpx的兄弟

====================================================================

顺便转一下stdClass的介绍

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

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

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

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

例如:

$user = new stdClass();
$user->name = 'gouki';
$myUser = $user;
$myUser->name = 'flypig';

如果在PHP4时代,这样的代码就是在消耗系统资源。因为:
$myUser = $user;
这是创建了一个拷贝。所以,在PHP4的时候,都是这样使用:
$myUser = & $user;

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

Incoming search terms:

Tags: array, object, stdClass, 对象, 数组

本文地址: http://blog.21andy.com/20080508/1104.html

6 评论 to “PHP开源CMS之MODx”

  1. longerface 于 2008-08-20 13:53:12 发表:

    谢谢你。人才!

  2. tomheng 于 2009-06-12 16:21:22 发表:

    今天遇到stdclass()拜读了你的文章,有点明白了。

    jiji 于 2010-02-06 16:27:03 回复:

    good but i want to say fuck

  3. wontao 于 2009-09-11 10:49:43 发表:

    thanks,好像有点明白了

  4. Jason 于 2011-09-06 22:19:50 发表:

    OK,有点懂了~

  5. Jason 于 2011-09-06 22:36:30 发表:

    刚刚查了下,觉得楼主有点错了 :stdClass是PHP的一个基类,所有的类几乎都继承这个类。
    class Foo{}
    $foo = new Foo();
    echo ($foo instanceof stdClass)?'Y':'N';
    // outputs 'N'

    http://stackoverflow.com/questions/931407/what-is-stdclass-in-php