在将变量与$this->变量引用一起使用之前,是否有必要在 PHP 中声明变量? 或者$this->变量的用法是否足以在方法中声明类变量?
例如使用:
class MyClass {
public function setName($name) {
$this->myName = $name;
}
}
与以下相反:
class MyClass {
public $myName;
public function setName($name) {
$this->myName = $name;
}
}
不,这不是必需的。
http://php.net/manual/en/language.oop5.overloading.php#object.get
尝试访问这些变量时会使用函数 __get()
和 __set()
。
这可能会有一些意外的行为,例如,如果您有一个私有变量private $test;
并且您尝试访问$obj->test
您将收到警告,因为该变量在类外部无法访问。
在同一实例中,如果未定义变量,但您使用 $this->test = 5
设置了它,则可以使用 $var = $this->test;
访问它。
IDE 通常不会解析这些变量,但有些允许你使用 phpdocs 来帮助自动完成代码。
前任: /* @var Object $test */
正如其他人所说,这不是一个好主意或最佳实践。但这是可以做到的 https://ideone.com/R2uGva
<?php
class MyClass {
public function setName($name) {
$this->myName = $name;
}
}
$kevin = new MyClass;
$kevin->setName('kevin');
var_dump($kevin);