php 对象复制
2015-09-25 11:52
501 查看
php 像其他的语言一样可以有变量的赋值功能,利用赋值操作符 =
一般情况下php存储变量的结构是 zval,
但是存储对象用的数据结构是:object store
在用到= 和 函数参数传递的时候,传递过来的都是zval 的指针
这个是时候两个变量使用的都是同一个对象 ,改变其中任何一个对象的值,在另一个变量指向的值中也会改变
这些赋值的复制都是浅复制
为了改变一个变量,另外一个不跟着改变,php创造了另一个操作 clone
使用clone以后会把clone对象和原来的对象使用的是不同的存储object store,但是对这个对象中使用的类还是引用类型的
可以使用魔方函数__clone(),可以在这个函数里指定应用队形的时候使用new
还有一种是串行化,可以更直接的使用
var2 = unserialize(serialize(var1))
参考:http://blog.csdn.net/clh604/article/details/11367329
这篇文章里写的非常的详尽,有相应的代码佐证,建议去看一看
一般情况下php存储变量的结构是 zval,
但是存储对象用的数据结构是:object store
在用到= 和 函数参数传递的时候,传递过来的都是zval 的指针
这个是时候两个变量使用的都是同一个对象 ,改变其中任何一个对象的值,在另一个变量指向的值中也会改变
这些赋值的复制都是浅复制
为了改变一个变量,另外一个不跟着改变,php创造了另一个操作 clone
使用clone以后会把clone对象和原来的对象使用的是不同的存储object store,但是对这个对象中使用的类还是引用类型的
可以使用魔方函数__clone(),可以在这个函数里指定应用队形的时候使用new
还有一种是串行化,可以更直接的使用
var2 = unserialize(serialize(var1))
参考:http://blog.csdn.net/clh604/article/details/11367329
这篇文章里写的非常的详尽,有相应的代码佐证,建议去看一看
相关文章推荐
- php end()函数与current()函数
- PHP多线程读写文件操作
- ThinkPHP进程计数类Process用法实例详解
- php文件下载
- php实现的Curl封装类Curl.class.php用法实例分析
- phpcms v9 代码分析笔记1
- php里input数组的应用
- php 正则中的"i,m,s,x,e"分别表示什么
- PHP常用正则表达式汇总
- php调用 .net webservice demo
- Zend API:深入 PHP 内核
- mac os 下打开FTP服务器
- ViewPager 如何得到当前的Fragment (使用FragmentPagerAdapter)
- php时间控制
- PHP简单实现断点续传下载的方法
- 运用Xdebug调试和优化PHP程序
- PHP官方Windows扩展资源索引
- PHP正则表达式 /i, /is, /s, /isU等
- php 发送 email
- php检测字符串是否含有重复或递增的字符