PHP:类变量可见性


PHP: class variable visibility

我只是一个偶尔的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的输出。

这个代码是100%正确和工作。我已经在PHP 5上检查过了。它在字符串中返回"某物"。这是正确的行为。

从手册:

注意:出于兼容性原因,PHP 4仍然支持使用var关键字声明变量的方法(作为public关键字的同义词)。在5.1.3之前的PHP 5中,使用它会生成E_STRICT警告。