【发布时间】:2011-08-28 11:39:26
【问题描述】:
我注意到 PHP 中有两种方法可以做同样的事情。你能告诉我哪种方式是更好的编程习惯吗?
在第一个示例中,我在类上使用了一个私有变量。在第二个示例中,我在类方法中使用了一个静态变量。
class Test {
private $_myvar;
public function getVar(){
if (!isset($this->_myvar)) {
$this->_myvar = "test\n";
}
return $this->_myvar;
}
}
$oTest = new Test();
echo $oTest->getVar(); // sets var first time and returns it
echo $oTest->getvar(); // pulls from cache
或者:
class Test {
public function getVar(){
static $myvar;
if (!isset($myvar)) {
$myvar = "test\n";
}
return $myvar;
}
}
$oTest = new Test();
echo $oTest->getVar(); // sets var first time and returns it
echo $oTest->getvar(); // pulls from cache
【问题讨论】:
-
在你的第一个例子中它不应该说 $this->_myvar 而不是 $_myvar?
-
“私人”部分没有区别;公共和受保护的类属性也存在相同的行为。
-
@El Yobo,对,但是拥有公共变量的访问器会很愚蠢。 :)
-
@bumperbox - 我的错 - 错字。谢谢!我会编辑。
-
这很愚蠢,是的 :) 我只是指出“私人”不会改变这里的行为。例如,有一个受保护变量的访问器是有意义的;但无论是否有意义,行为都是一样的。
标签: php class variables static private