我只是一个曾经的PHP开发人员。现在,在遗留应用程序上工作,我只是遇到了以下问题,这看起来非常愚蠢。但我无法获得$ someString类变量来保持正确的值:
class MyClass{
var $someString;
function doSomething(){
//$this->setString(); //this is effectively not called here, but later in getIframe()
$this->buildIframe();
echo $this->someString; //actually, I need someString here, but it is empty
}
function setString(){
$this->someString = "something";
}
function buildIframe(){
$content .= <iframe....>;
}
function getIframe(){
$this->setString();
}
}
$myClassInstance = new MyClass();
$myClassInstance->doSomething();
$myClassInstance->getIframe();
据我所知,doSomething()在类上下文中被调用,正如我所展示的那样。
我做错了什么?
修改 我查看了代码,我想我发现了导致这种情况的原因。在html输出中嵌入了一个iframe,它在一个部分生成并稍后调用。所以setString()方法实际上并没有立即调用,我首先想到的是调用iframe代码时。这就是为什么它在我需要字符串输出的地方不可用。
我想现在的代码就是这样,除了getIframe()方法之外,没有办法获得$ someString输出。
答案 0 :(得分:5)
此代码100%正确且有效。我在PHP 5上检查了它。它在字符串中回响“某事”。这是正确的行为。
来自manual:
注意:出于兼容性原因,仍然支持使用var关键字声明变量的PHP 4方法(作为public关键字的同义词)。在5.1.3之前的PHP 5中,它的使用会产生E_STRICT警告。