PHP: видимость переменной класса

Я всего лишь один раз в 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. Вот почему это не доступно, где мне нужен вывод строки.

Я полагаю, что, как и сейчас, код не может быть получен в виде вывода $ someString, кроме как внутри метода getIframe ().

-1

Решение

Этот код на 100% правильный и рабочий. Я проверил это на PHP 5. Это эхом «что-то» в строке. И это правильное поведение.

От руководство:

Примечание. Метод объявления переменной PHP 4 с ключевым словом var по-прежнему поддерживается в целях совместимости (в качестве синонима открытого ключевого слова). В PHP 5 до 5.1.3 его использование генерировало бы предупреждение E_STRICT.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]