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