在PHP开发中,很多时候都会看到别人的代码里有
$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,可以直接将数组转化为对象这也是一个好办法哦。
分享到:
相关推荐
下面详细介绍`stdClass`的用法示例以及它在PHP中的原理和使用方法。 ### `stdClass`的创建与使用 在PHP中,使用`stdClass`创建对象非常简单,不需要进行类的定义。可以直接实例化该类: ```php $obj = new ...
下面将详细介绍这一方法以及其背后的原理和相关知识点。 1. **`new StdClass()` 的工作原理** - `StdClass` 是PHP内置的一个特殊类,它没有任何预定义的成员变量或方法。当你使用 `new StdClass()` 时,PHP会实例...
本文将详细介绍如何在ASP中创建这样的动态对象工厂类。 首先,我们需要了解`stdClass`在PHP中的作用。`stdClass`是PHP的内置类,可以用来创建匿名对象,即没有预定义方法或属性的对象。我们可以通过向`stdClass`...
很多人在PHP输出一个二维数组的时候出现“Fatal error: Cannot use object of type stdClass as array in……”。这篇文章主要介绍了该错误的解决办法,需要的朋友可以参考下
翻开手册,搜索stdClass,你会发现,手册上几乎没有介绍,如果你再次搜索google,看到的也几乎全是英文解释。其实,stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。似乎没有其他作用。也几乎没有任何...
介绍 PHP的函数是将变量导出为可执行PHP代码的便捷方法。 与源代码一样,存储可以由OPCache缓存的数据,之后又能以非常快的速度进行检索,这比使用unserialize()或json_decode()进行反unserialize()化的数据要快得...
适用于PHP的简单JSON介绍用于PHP的简单JSON简化了json_encode函数。 无需创建Stdclass然后对其进行json_encode,发送,标头和回显json,您只需创建对象并使用$json->send(); 。 优点: 简便:捆绑函数一样简单,如...
// 示例输出:array(2) { [0] => object(stdClass)#158 (2) { ["name"]=> string(10) "SuperUser" ["username"]=> string(5) "admin" } [1] => object(stdClass)#147 (2) { ["name"]=> string(11) "xuezhouzhou" [...
在PHP开发中,经常需要将对象数组转换成普通数组,尤其是在与外部API接口交互时,接口返回的数据常常是对象数组形式,而业务逻辑中需要以普通数组的方式...希望本文的介绍能够帮助到在PHP开发中遇到类似需求的开发者。
本部分将详细介绍一系列常用的数组处理函数。 ##### 1. `array_change_key_case` **功能描述:** 将数组中的所有键名转换为小写或大写。 **示例代码:** ```php $array = ['NAME' => 'John', 'AGE' => 30]; $...
该方法会返回一个数组结果集,其中每个结果都是一个`StdClass`对象,使得数据访问变得非常灵活。除了使用问号占位符进行参数绑定外,Laravel还支持命名绑定,这使得参数绑定更加直观易懂。 对于插入操作,Laravel...
本文将详细介绍PHP中对象转数组的过程,并提供一个示例函数来完成这项工作。 首先,需要明确的是,在PHP中,对象与数组是不同的数据结构。对象是一个类的实例,拥有属性和方法,而数组则是用来存储一系列值的集合。...
下面将详细介绍这些关键知识点。 1. **基础语法** PHP语句通常以分号结尾。例如: ```php echo "Hello, World!"; ``` 这行代码会在网页上显示“Hello, World!”。 2. **数据类型** PHP支持多种数据类型,...
这个函数首先检查传入的参数是否为数组,如果是,则创建一个新的`stdClass`对象,并遍历数组,将数组的键值对赋值给对象的属性。如果传入的不是数组,则直接返回该参数。 函数`array2object`的实现代码如下: ```...
$data = new stdClass(); // 一个未定义属性的对象 $json = json_encode($data); if ($json === false) { echo 'JSON编码错误:' . json_last_error_msg(); } else { echo $json; } ?> ``` #### 二、创建/解析...
- 无序树中的节点使用`stdclass`来表示,包含`id`(节点ID)、`parentId`(父节点ID)、`childrenIds`(子节点ID集合)和`data`(节点数据,如节点名称等属性)。 - 通过这种方式,可以避免重复存储层次关系信息,...
总结来说,本文介绍了如何在PHP中查询数据库并将结果输出为JSON格式的两种方法。一种是利用PHP的内置类将数组转换为对象后进行编码;另一种是直接对数组进行编码。在实际开发中,可以根据需要选择使用合适的方法。...
$file=new stdClass(); $file->fid=0; $file->uid=1; $file->filename=$filename; $file->uri="public://images/tushuimage/***/".$filename; $file->filemime="image/jpeg"; $file->filesize=filesize(...