-1

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

4

1 回答 1

5

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

手册

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

于 2015-07-29T08:41:14.013 回答