Доступ к переменным внутри функции внутри класса (области?) - PullRequest
1 голос
/ 06 февраля 2011

Я довольно новичок в занятиях, и я искал в Интернете какое-то руководство по этому вопросу, но, к сожалению, мне не удалось найти решение.Любая помощь, которую вы, ребята, могли бы дать мне, была бы очень признательна.

У меня 2 файла.

1) variables.inc.php:

$myvar = "hello world";

2) myclass.php:

include("variables.inc.php");
class myClass {

    function doSomething() {
        echo "myvar: $myvar";
    }
}

Проблема: $myvar возвращается пустым.Я попытался добавить эту строку между function doSomething() { и echo...: global $myvar; Но, похоже, это тоже не работает.Есть предложения?

Ответы [ 3 ]

2 голосов
/ 06 февраля 2011
function doSomething() {
  global $myvar;
  echo "myvar: $myvar";  
}  
2 голосов
/ 06 февраля 2011

$myvar определено в глобальной области видимости.

Если к нему действительно нужно получить доступ,

function doSomething() { global $myvar; echo "myvar: $myvar"; }

Однако использование глобальных переменных в других областях считается плохой практикой.

Более подробное объяснение см. В главе *1001* Область переменных в официальном руководстве по PHP.

0 голосов
/ 06 февраля 2011

НИКОГДА не используйте global с классами!

Если вам нужна переменная в вашем классе, вставьте ее в метод или конструктор:

class myClass {

function doSomething($myvar) { echo "myvar: $myvar"; }

}

$obj = new myClass;
$obj->doSomething($myvar);
...