摘要:中的對(duì)象傳遞然后說(shuō)一下之后的默認(rèn)情況下的對(duì)象是通過(guò)引用傳遞的這件事情。如此時(shí),其實(shí)表示的并不是是的引用,和可以說(shuō)是沒(méi)什么關(guān)系的,有關(guān)系的是實(shí)例化類得到的對(duì)象。
首先引發(fā)這篇博文的是來(lái)源于這篇帖子:https://segmentfault.com/q/10...
經(jīng)過(guò)了思考之后,我決定把回答思考變成博客做一下記錄,如有不對(duì)之處,歡迎指正。
指針與引用首先,引用和指針是不一樣的,指針在C語(yǔ)言里的概念是表示變量的地址;
引用在PHP里是表示變量2是變量1的別名,如:
$a = "hello"; $b = &$a;
此時(shí)可以說(shuō)$b就是$a,$a就是$b;是同一個(gè)東西,比如你英文名叫 Steven,中文名叫 二狗子,不管叫啥,都是你。
PHP中的對(duì)象傳遞然后說(shuō)一下PHP5之后的“默認(rèn)情況下PHP的對(duì)象是通過(guò)引用傳遞的這件事情。
如:
class Obj() { public $o = "hello"; } $a = new Obj(); $b = $a; $c = &$a;
此時(shí),$b=$a其實(shí)表示的并不是$b是$a的引用,$a 和 $b可以說(shuō)是沒(méi)什么關(guān)系的,有關(guān)系的是實(shí)例化Obj類得到的對(duì)象。
也就是說(shuō),此時(shí)$a和$b都是實(shí)例化Obj后得到的對(duì)象,而$b=$a唯一產(chǎn)生的是$b從$a這里得到了實(shí)例化Obj后的引用;
然后看$c = &$a
此時(shí)是$c是$a的引用,也就是說(shuō)$c就是$a;
假設(shè):
unset($b); unset($c);
那么unset($b)只是刪除了實(shí)例化Obj后得到的對(duì)象的一次引用計(jì)數(shù),
unset($c)則刪除了$a和$b(因?yàn)閮蓚€(gè)表示同一個(gè)東西);
同樣的,假設(shè):
$a->o = "test"; echo $b->o; // string "test"
雖然說(shuō)$a和$b"沒(méi)什么關(guān)系",但是與實(shí)例化后的對(duì)象有關(guān)系,也就是$a改變的是實(shí)例化后的對(duì)象的數(shù)據(jù),而$b的調(diào)用也是調(diào)用了這個(gè)對(duì)象的數(shù)據(jù),所以從一定層面上看起來(lái)其實(shí)是有關(guān)系的。
再一個(gè)假設(shè)這樣說(shuō)還不明白的話,從我們web的業(yè)務(wù)邏輯來(lái)看。
用戶A和用戶B都登陸了網(wǎng)站,用戶A改變了存儲(chǔ)評(píng)論的數(shù)據(jù)表的數(shù)據(jù),用戶B假設(shè)去取這條數(shù)據(jù),則用戶B獲取到就是修改后的數(shù)據(jù),而其實(shí)用戶A和用戶B是沒(méi)什么關(guān)系的。
而引用其實(shí)類似于用戶A同時(shí)在手機(jī)端和電腦端登陸,然后改變了評(píng)論數(shù)據(jù)表的數(shù)據(jù),不管是在手機(jī)端還是在電腦端重新獲取數(shù)據(jù)都是修改過(guò)的,但是實(shí)際上就是一個(gè)人。
引用計(jì)數(shù)我文中提到了一個(gè)引用計(jì)數(shù)的名詞,這里又涉及到PHP中的另外一個(gè)問(wèn)題,就是PHP的引用計(jì)數(shù),這個(gè)可以參考PHP官方的文檔,我覺(jué)得已經(jīng)很詳細(xì)了:
http://php.net/manual/zh/feat...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/25636.html
摘要:作為開(kāi)發(fā)中應(yīng)用最廣泛的開(kāi)源腳本語(yǔ)言,憑借庫(kù)類豐富,使用簡(jiǎn)單,安全等特點(diǎn),成為和等互聯(lián)網(wǎng)巨頭和全球超過(guò)網(wǎng)站的主要開(kāi)發(fā)語(yǔ)言,然而性能問(wèn)題是一直以來(lái)飽受詬病的,來(lái)自開(kāi)發(fā)組的高馳濤同學(xué)將為我們帶來(lái)他對(duì)性能優(yōu)化方面的思考和建議。 PHP作為Web開(kāi)發(fā)中應(yīng)用最廣泛的開(kāi)源腳本語(yǔ)言,憑借庫(kù)類豐富,使用簡(jiǎn)單,安全等特點(diǎn),成為Facebook和BAT等互聯(lián)網(wǎng)巨頭和全球超過(guò)70%網(wǎng)站的主要開(kāi)發(fā)語(yǔ)言,然而性能...
摘要:一測(cè)試工具壓力測(cè)試工具是針對(duì)的性能測(cè)試工具,可以只安裝工具。顯示版本號(hào)并退出。用戶名和密碼由一個(gè)隔開(kāi),并以編碼形式發(fā)送。參考并發(fā)數(shù)問(wèn)題思考與工作原理和優(yōu)化漏洞調(diào)大的并發(fā)連接數(shù)調(diào)的等。 一、測(cè)試工具: Apache 壓力測(cè)試工具ab ab是針對(duì)apache的性能測(cè)試工具,可以只安裝ab工具。 ubuntu安裝ab apt-get install apache2-utils centos安...
摘要:一測(cè)試工具壓力測(cè)試工具是針對(duì)的性能測(cè)試工具,可以只安裝工具。顯示版本號(hào)并退出。用戶名和密碼由一個(gè)隔開(kāi),并以編碼形式發(fā)送。參考并發(fā)數(shù)問(wèn)題思考與工作原理和優(yōu)化漏洞調(diào)大的并發(fā)連接數(shù)調(diào)的等。 一、測(cè)試工具: Apache 壓力測(cè)試工具ab ab是針對(duì)apache的性能測(cè)試工具,可以只安裝ab工具。 ubuntu安裝ab apt-get install apache2-utils centos安...
摘要:總結(jié)垃圾回收機(jī)制以的引用計(jì)數(shù)機(jī)制為基礎(chǔ)以前只有該機(jī)制同時(shí)使用根緩沖區(qū)機(jī)制,當(dāng)發(fā)現(xiàn)有存在循環(huán)引用的時(shí),就會(huì)把其投入到根緩沖區(qū),當(dāng)根緩沖區(qū)達(dá)到配置文件中的指定數(shù)量后,就會(huì)進(jìn)行垃圾回收,以此解決循環(huán)引用導(dǎo)致的內(nèi)存泄漏問(wèn)題開(kāi)始引入該機(jī)制 php垃圾回收機(jī)制,對(duì)于PHPer來(lái)說(shuō)是一個(gè)不陌生但是又不是很熟悉的內(nèi)容。那么php是怎么實(shí)現(xiàn)對(duì)不需要的內(nèi)存進(jìn)行回收的呢? php變量的內(nèi)部存儲(chǔ)結(jié)構(gòu) 首先還是...
摘要:中基礎(chǔ)中的三大坑,遍歷,引用機(jī)制,數(shù)組。今天我們?cè)谥v講中的一些奇怪現(xiàn)象。本文適合有一定基礎(chǔ)的。運(yùn)行流程共用一個(gè)結(jié)構(gòu)體開(kāi)始遍歷數(shù)組,進(jìn)行判斷,拷貝數(shù)組是一個(gè)新的結(jié)構(gòu)體,操作的是新的結(jié)構(gòu)體。那么遍歷數(shù)組時(shí),全程與原數(shù)組無(wú)關(guān)。 PHP中基礎(chǔ)中的三大坑,foreach遍歷,引用機(jī)制&,數(shù)組。 今天我們?cè)谥v講foreach中的一些奇怪現(xiàn)象。 在講解之前,可以先看看我其他相關(guān)的文章,屬于同一個(gè)大的...
閱讀 1010·2021-09-27 13:36
閱讀 1056·2021-09-08 09:35
閱讀 1142·2021-08-12 13:25
閱讀 1501·2019-08-29 16:52
閱讀 2989·2019-08-29 15:12
閱讀 2793·2019-08-29 14:17
閱讀 2693·2019-08-26 13:57
閱讀 1074·2019-08-26 13:51