PHP 对象详解
1.应用场景
了解PHP对象的用法. 合理使用其进行开发. |
2.学习/操作
1. PHP对象到底是值传递还是引用传递
手册: 在php5 的对象编程经常提到的一个关键点是“默认情况下对象是通过引用传递的”。但其实这不是完全正确的。 下面通过一些例子来说明。 PHP 的引用是别名,就是两个不同的变量名字指向相同的内容。 在 PHP 5,一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。 当对象作为参数传递,作为结果返回, 或者赋值给另外一个变量,另外一个变量跟原来的不是引用的关系,只是他们都保存着同一个标识符的拷贝,这个标识符指向同一个对象的真正内容。
手册上例子: 这里省略.
代码执行情况:
网友一: 对象在函数中是引用传递 即使赋值给其它变量,也是引用 但是改变了$a的类型,准确的说是zval.value指针都变化了,所以此时产生了分裂。
所以: 尽量避免函数内操作外部对象,否则有可能造成致命性的逻辑错误,特别是改变对象数据的时候。
网友二: $a和$b是同一个标示符的拷贝,都是指向同一个对象A,所以你改变$a或者$b的属性, 其实也就是改变的同一个对象A的属性, 但是$a和$b是两个不同的变量,他们两个不是引用关系。
网友三: 其实 而当你设置了
关键点: 造成这种疑问的,都是把引用当成指针去理解了.
个人建议: 不要轻易去操作对象, 如果可以使用数组去代替.
后续补充 ... |
3.问题/补充
TBD |
4.参考
https://www.php.net/manual/zh/language.oop5.references.php https://segmentfault.com/q/1010000010641993?_ea=2363326 //PHP对象到底是值传递还是引用传递 https://www.cnblogs.com/aademeng/articles/9194688.html //PHP中对象是按值传递还是按引用传递? |
后续补充
...