Неопределенная переменная: время простоя - PullRequest
0 голосов
/ 09 января 2010

вот мой код ....

class line{
    function db($host, $user, $pass, $db){
        mysql_connect($host, $user, $pass) or die("Could Not Connect to Database or Database Does not Exists....");
        mysql_select_db($db) or die("Database Does not Exists....");
    }

    $idletime = 300;
    $deltime = 600;

     function test(){
    echo $idletime;
    echo idletime;
}

}

и вызов этого класса как

$w = new line();
$w->test();

но там написано

Неопределенная переменная: время простоя в *****

пожалуйста, дайте мне знать, в чем конкретно проблема ...

Ответы [ 2 ]

4 голосов
/ 09 января 2010

Ваша переменная является свойством класса - или, по крайней мере, я предполагаю, что вы хотите, чтобы оно было ...


Эта строка внутри вашего test метода:

echo $idletime;

Пытается получить доступ к переменной, определенной внутри этого метода , а не к свойству класса .

А такой локальной переменной нет - отсюда и уведомление.


Чтобы получить доступ к свойству класса, вам нужно использовать $this, таким образом:

echo $this->idletime;


Кроме того, ваш код недействителен: вы должны объявить, что ваши «переменные» действительно являются свойствами класса, т. Е. Вам необходимо использовать некоторые из ключевых слов visibility перед ними.

Вот вам класс, однажды переписанный:

class line {
    function db($host, $user, $pass, $db) {
        mysql_connect($host, $user, $pass) or die("Could Not Connect to Database or Database Does not Exists....");
        mysql_select_db($db) or die("Database Does not Exists....");
    }

    protected $idletime = 300;
    protected $deltime = 600;

    public function test(){
        echo $this->idletime;
    }
}

У меня есть:

  • Установите ваши свойства как protected
  • И я использую $this для доступа к ним из test метода
  • Я также указал, что метод test - public - он используется по умолчанию, но мне нравится быть откровенным об этом.


Не стесняйтесь потратить некоторое время на чтение Классов и Объектов раздела руководства: вы узнаете много полезного; -)

0 голосов
/ 09 января 2010

Вам нужно передать переменные в вызов функции,

function test($idletime){
    echo $idletime;
    echo idletime;
}

Или, может быть, переменная выходит из области видимости, сначала определите их как глобальные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...