$this是PHP中指向当前对象实例的伪变量,仅在类的非静态方法中可用,其指向由调用方法的对象决定,而非作用域查找或“就近原则”;在闭包中使用时,仅当闭包定义于类方法内且绑定对象上下文方可访问;静态方法中不可使用$this,否则触发致命错误。

在PHP中,$this 并不遵循“就近原则”,因为它不是一个变量,而是一个伪变量(pseudo-variable),只在类的实例方法中可用,指向当前对象实例。
$this 只能在类的方法内部使用,代表调用该方法的那个对象。它不是通过作用域查找决定的,而是由运行时上下文决定的——即哪个对象调用了这个方法。
比如:
class Person {这里的 $this 指向的是 $p 这个实例。
立即学习“PHP免费学习笔记(深入)”;
有些初学者可能会误以为在嵌套函数或闭包中,$this 会“就近”绑定到某个类环境,但实际上:
例如:
百家CMS微商城从诞生开始,就坚持着简单实用的原则,基于目前最流行的WEB2.0的架构(php+mysql),拥有成熟、稳定的微电商技术解决方案。基于完整的会员等级制度,完善的微商城购物流程,订单管理、优惠券、搜索、购物车等功能。采用跨平台机制,可同时对接微信公众号平台和支付宝服务窗,兼容微博、手机QQ等平台;丰富的支付方式、支持微信支付、支付宝支付、货到付款、余额支付、网银支付等。并且拥有完整的
0
这个例子中,闭包能使用 $this 是因为 PHP 自动将定义在对象方法中的闭包绑定到该对象,而不是因为“就近”查找。
在声明为 static 的方法中,不能使用 $this,因为静态方法不属于某个具体对象实例,而是属于类本身。
public static function showInfo() {此时访问实例属性会触发致命错误。
$this 的指向完全取决于它所在的**非静态方法被哪个对象调用**,与作用域嵌套或“就近变量”无关。它不是变量,无法被赋值或传递,仅在对象上下文中有效。
基本上就这些。理解 $this 的关键是记住:它是“当前对象”的引用,仅存在于实例方法中,由调用者决定。
以上就是php中$this的就近原则的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号