Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么是$this->;?_Php - Fatal编程技术网

Php 什么是$this->;?

Php 什么是$this->;?,php,Php,到目前为止,我想我知道的是: 那么,$this->是在函数/var之外访问函数/var吗 但是$this->如何知道它是函数还是变量呢 为什么我们引用这样的变量$this->data而不是this$this->$data?将访问当前对象中的方法或字段 至于为什么是$this->data而不是$this->$data,这只是一个语法怪癖。您必须询问PHP语言设计师。这可能是因为后者对于一种方法来说没有多大意义 如果您觉得这像希腊语,那么您可能需要前往并阅读。$此指的是已在其上调用方法的当前对象。如

到目前为止,我想我知道的是:

那么,
$this->
是在函数/var之外访问函数/var吗

但是
$this->
如何知道它是函数还是变量呢


为什么我们引用这样的变量
$this->data
而不是this
$this->$data

是指您当前所在对象的变量
$this->
将访问当前对象中的方法或字段

至于为什么是
$this->data
而不是
$this->$data
,这只是一个语法怪癖。您必须询问PHP语言设计师。这可能是因为后者对于一种方法来说没有多大意义


如果您觉得这像希腊语,那么您可能需要前往并阅读。

$此
指的是已在其上调用方法的当前对象。如果末尾有一对括号,它就知道它是否是一个函数。我们使用前一种语法是因为
$this->$data
表示查看名称为
$data
的字段;e、 g.
$this->foo
如果
$data=='foo'
这是一个相当长的主题,但在排序中,$this是指向实例的指针$此->数据是指特定实例(此实例)的数据变量。它是$this->data,而不是$this->$data,这仅仅是因为惯例。

$this
表示给定对象的实例,来自对象内的上下文


我会说,知道您是否正在访问方法或属性是您的责任。阅读文档。如果使用此方法调用对象方法,它将使用预期语法
$this->method($args)和属性(成员变量)使用预期语法
$this->var='value'

可以是“对象”或“类的实例”。如果你想谈论类本身,可以使用
self::
。或者更好的是:“[…]类的实例[…]”@NSanjay你熟悉面向对象编程吗?@NSanjay我觉得很难相信。您从未在类中引用过其他方法/字段?是的,这就是为什么我的第一个编码很混乱,直到有人用$this->重写它,才向我指出这一点,这就是我为什么要问这个问题的原因。因此,我的第一篇文章是正确的?“当从对象上下文中调用方法时,伪变量$this可用。$这是对调用对象的引用(通常是该方法所属的对象,但如果从辅助对象的上下文静态调用该方法,则可能是另一个对象)。”我想知道这样的问题在这里是否从未被问过。我认为“其名称存储在
$data
中”的可能重复在这里会更有意义。所以这只是一个安全问题?不,它与安全无关,看看面向对象编程。这是一种引用特定对象的方法。您必须查看类和oop才能了解更多。使用$this->我们可以在函数中嵌套函数吗?这会不会使读者复杂化?就像稍后要修改代码的人一样