美文网首页
对第39篇博文的修正

对第39篇博文的修正

作者: 与子笑 | 来源:发表于2018-05-20 10:21 被阅读0次

php  @amazeUI  2017-02-05 06:48:03

近期翻阅了一些资料,附上链接https://secure.php.net/manual/zh/language.oop5.references.php

第39篇博文的链接http://www.php01.com/home/index/art/artid/39.html

发现与官方文档有出入,之前写那篇博文的时候,是看的一本叫作PHP核心技术与最佳实践的书,然后这本书的出版日期是2012年的,然后近期翻阅其他关于php底层的一些东西的时候提到了对象,对对象的解释与这本书的解释不一样,最后找到官方发现我之前看的那本书的一些知识已经过期了。现在来讲讲至少是php5的对象到底是什么了。

官方文档这么描述的:

在php5 的对象编程经常提到的一个关键点是“默认情况下对象是通过引用传递的”。但其实这不是完全正确的。下面通过一些例子来说明。

php的引用是别名,就是两个不同的变量名字指向相同的内容。在php5,一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。 当对象作为参数传递,作为结果返回,或者赋值给另外一个变量,另外一个变量跟原来的不是引用的关系,只是他们都保存着同一个标识符的拷贝,这个标识符指向同一个对象的真正内容。

typedef struct _zend_object_value {

zend_object_handle handle; //无符号整数,这里保存的是一个指针,就是官网说的标识符,指向对象的属性

zend_object_handlers *handlers;//这个可以理解为这个对象所属于的类(主要是里面的方法)

} zend_object_value;

所以,class Dog{

public $age=5;

}

$dog1 = new Dog();

$dog2=$dog1;

$dog2->age=3;

echo $dog1->age;等于几呢?答案是3,修改属性并不会导致zval分裂,因为一个对象的到对象的属性有三层,dog1和dog2指向同一个指针,而这个指针指向的是一张符号表,修改的是符号表里的属性值。如果修改的是指针,则分裂。例如$dog2=1;此时才会分裂。

相关文章

  • 对第39篇博文的修正

    php -@amazeUI -2017-02-05 06:48:03 近期翻阅了一些资料,附上链接https://...

  • 彩云【18】(修正版)

    高亮:您正在阅读《彩云》前1-20章的修改文完整内容。此篇为第18章,修正版较旧版出现丰富&完善内容,修正漏洞,无...

  • 彩云【17】(修正版)

    高亮:您正在阅读《彩云》前1-20章的修改文完整内容。此篇为第17章,修正版较旧版出现丰富&完善内容,修正漏洞,有...

  • 我在网上有著作权吗?

    偶然用Google搜索我的博文,想看看搜索引擎对我博文的收录情况。基本上大部分以文章标题为关键词的搜索结果,排在第...

  • 自我的修正

    想到要给自己这篇文章起一个什么题目,脑海中想到是自我的修正,对自己工作的修正,也是对自己心态的修正。 从过年前开始...

  • 博文改写第55天

    不过一元思维相当于房屋的建立,是一切思维方式的基础。如果缺乏一元思维模式的教育,直接进行二元思维教育,就会变成“断...

  • 博文改写第56天

    中国目前没有真正的文科,实际上也没有真正的“二元思维教育”,所谓的文科教育完全就是瞎胡闹。 一,本段要达到的目的是...

  • 博文改写第61天

    各位现在应该了解:我为什么非常反对中小学教育阶段强调“文学艺术”的学习了吗?因为小孩子尚未具备良好的线性一元思维的...

  • 博文改写第60天

    但是你也别想去学,首先是如果一元二元思维都不具备,学了也白学同时现在的国内是“大唐国中无禅师”,现在的各种“大师”...

  • 博文改写第57天

    想想也正常,连“一元思维”都不会玩的中国教育,怎么可能懂得“二元思维”? 一,本段要达到的目的是什么? 中国教育连...

网友评论

      本文标题:对第39篇博文的修正

      本文链接:https://www.haomeiwen.com/subject/qtizdftx.html