如何在PHP內部存取屬性?
P粉518799557
2023-09-05 18:50:40
<p>在這份文件的基礎上跟進:https://www.php.net/manual/en/language.oop5.references.php</p>
<blockquote>
<p>PHP物件導向程式設計的一個關鍵點經常被提及的是「物件預設透過引用傳遞」。這並不完全正確。 </p>
</blockquote>
<blockquote>
<p>在PHP中,物件變數並不包含物件本身作為值。它只包含一個物件標識符,該標識符允許物件存取器找到實際的物件。 </p>
</blockquote>
<p>這實際上是如何運作的呢?例如,在C 中,箭頭操作符似乎會隱式地解引用指針,然後像在物件變數本身上存取屬性時一樣存取屬性。 </p>
<p>我是這樣理解的:</p>
<pre class="brush:php;toolbar:false;">obj->prop
(*obj).prop // 等同於上面的行</pre>
<p>這看起來非常簡潔。在這兩種情況下,屬性的呼叫都是物件變數位址與屬性偏移量總和。 </p>
<p>但是在PHP中,這是如何運作的呢?
文件建議指標並不會儲存記憶體位址,而是一個「物件標識符」。在PHP中存取屬性是一個高度抽象的過程,還是會將物件標識符解析為記憶體位址,然後以類似於C / Java等方式存取它? </p>
這是一個高度抽象的過程,語法的相似並不意味著程式碼會像C/C 那樣「掉入」工作。你可以深入程式碼來看看它在底層是如何運作的。