搜尋
首頁php教程php手册如何巧妙运用PHP中的 stdClass

如何巧妙运用PHP中的 stdClass

Jun 13, 2016 am 11:10 AM
php

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

  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,可以直接将数组转化为对象这也是一个好办法哦。

【相关教程推荐】

1. php编程从入门到精通全套视频教程
2. php从入门到精通 
3. bootstrap教程

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)