php中类的构造函数参数问题
详细代码如下:
final class Registry {
private $data = array();
public function get($key) {
return $this->data[$key];
}
public function set($key, $value) {
$this->data[$key] = $value;
}
}
abstract class Controller {
protected $registry;
public function __construct($registry) {
$this->registry = $registry;
}
}
class ControllerCommonHome extends Controller {
public function test() {
$this->registry->set('load','load');
}
}
$registry = new Registry();
$con = new ControllerCommonHome($registry);
$con->test();
echo $registry->get('load');
?>
在$con对象初始化时传入的参数$registry是以何种方式传入的?传值还是传地址?如果是传值,那么在$con对象执行函数test()时应该不会影响到原对象$registry,但事实是影响到了registry的值。
但是如果我把$registry改成一个简单变量,例如$registry = 123,同样是在$con对象中对$registry赋值,这个时候却没有影响到原来的变量,仍然是123。
求解
------解决方案--------------------
好吧, __clone() 构造函数。对象是可以克隆的,为啥克隆,就是不希望改变它的早前的状态
对象不是一般变量,请看下面一段谷歌搜到的
对象传递
PHP5使用了Zend引擎II,对象被储存于独立的结构Object Store中,而不像其它一般变量那样储存于Zval中(在PHP4中对象和一般变量一样存储于Zval)。在Zval中仅存储对象的指针而不是内容(value)。当我们复制一个对象或者将一个对象当作参数传递给一个函数时,我们不需要复制数据。仅仅保持相同的对象指针并由另一个zval通知现在这个特定的对象指向的Object Store。由于对象本身位于Object Store,我们对它所作的任何改变将影响到所有持有该对象指针的zval结构----表现在程序中就是目标对象的任何改变都会影响到源对象。.这使PHP对象看起来就像总是通过引用(reference)来传递,因此PHP中对象默认为通过“引用”传递,你不再需要像在PHP4中那样使用&来声明。
这种问题我以前都没想过,看到你的问题才去找资料的
0
0
相关文章
如何在 PHP 正则表达式中正确使用类常量表示十六进制字符(如 )
PHP XPath 处理非间断空格(NBSP)的策略与实践
php空格字符如何表示
php中nbsp是什么意思
如何从PHP中调用Python文件?
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。
463
2026.02.13
本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。
135
2026.02.13
本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。
64
2026.02.13
本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。
20
2026.02.13
本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。
26
2026.02.13
本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。
14
2026.02.12
本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。
524
2026.02.12
本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。
53
2026.02.12
热门下载
精品课程
共4课时 | 0.4万人学习
共27课时 | 6.8万人学习
共15课时 | 3.6万人学习
最新文章


