Php 使用self::而不是$this
我遇到了一些php代码,我认为编写它的开发人员有点自相矛盾。 下面是他写的代码:Php 使用self::而不是$this,php,static,static-methods,Php,Static,Static Methods,我遇到了一些php代码,我认为编写它的开发人员有点自相矛盾。 下面是他写的代码: if ($this->SQL !== null && $this->SQLState === self::STATE_CLEAN) return $this->SQL; 其中SQLState和STATE_CLEAN的定义如下: class someClass { const STATE_CLEAN = 1; private $SQLState =
if ($this->SQL !== null && $this->SQLState === self::STATE_CLEAN)
return $this->SQL;
其中SQLState和STATE_CLEAN的定义如下:
class someClass {
const STATE_CLEAN = 1;
private $SQLState = self::STATE_CLEAN;
}
所以你可以看到,对于某些类属性,他使用$this,对于某些类属性,他使用self::我不明白为什么。
有人能帮忙吗。谢谢这里:
private $SQLState = self::STATE_CLEAN;
属性初始化为常量的值
在某些情况下,属性可能会改变,但常量是常量。因此,检查这种情况:
$this->SQLState === self::STATE_CLEAN
验证当前状态是否与初始状态相同是有意义的
为了澄清,因为我认为我错过了问题的要点,使用了
self::STATE_CLEAN
,因为STATE_CLEAN
是一个问题。使用$this->STATE\u CLEAN
可以让您
注意:未定义的属性:someClass::$STATE\u CLEAN
在这里:
属性初始化为常量的值
在某些情况下,属性可能会改变,但常量是常量。因此,检查这种情况:
$this->SQLState === self::STATE_CLEAN
验证当前状态是否与初始状态相同是有意义的
为了澄清,因为我认为我错过了问题的要点,使用了
self::STATE_CLEAN
,因为STATE_CLEAN
是一个问题。使用$this->STATE\u CLEAN
可以让您
注意:未定义的属性:someClass::$STATE\u CLEAN
良好做法是:
使用
self::
对于类常量(引用类时-您可能没有此类的初始化对象实例) 和类变量的
$this->
(当引用初始化的对象实例时)好的做法是:
使用
self::
对于类常量(引用类时-您可能没有此类的初始化对象实例)
和类变量的
$this->
(在引用初始化对象实例时)不可能的可能重复,因为我知道它们都是什么意思,我只是不理解这个具体情况。我想我不理解你的问题。你能解释一下吗?他故意使用self::和$this,而他可以使用$this,实际上他不应该使用任何一个定义的属性是静态的?所以我认为要么他和他的代码不一致,要么他知道一些我不知道的事情,可能是不可能的重复,因为我知道他们都是什么意思,我只是不理解这个具体的案例。我想我不理解你的问题。你能解释一下吗?他故意使用self::和$this,而他可以使用$this,实际上他不应该使用任何一个定义的属性是静态的?因此,我认为要么他与代码不一致,要么他知道一些我不知道的事情,为什么不使用$this->STATE\u CLEAN而不是self::STATE_CLEAN@Dever在哪一部分中,他应该使用$this->STATE_CLEAN
而不是self::STATE_CLEAN
?实际上两者都不是静态的,为什么要使用self:@DeverSTATE\u CLEAN
是一个常量,您不能使用$this
访问它,为什么不使用$this->STATE\u CLEAN而不是self::STATE_CLEAN@Dever在哪一部分中,他应该使用$this->STATE_CLEAN
而不是self::STATE_CLEAN
?实际上两者都不是静态的,为什么使用self:@DeverSTATE_CLEAN
是一个常量,您不能使用$this