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