PHP:类变量可见性

时间:2015-07-29 08:36:44

标签: php class-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输出。

1 个答案:

答案 0 :(得分:5)

此代码100%正确且有效。我在PHP 5上检查了它。它在字符串中回响“某事”。这是正确的行为。

来自manual

  

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