如何在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++那样“掉入”工作。你可以深入代码来看看它在底层是如何工作的。