[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Видимость переменных.
Sergey1974
Доброго времени суток... поясните новичку вот такой вопрос:

Имеем файл require.php, где определена некоторая переменная:

...
$DB = new Database;
...


Имеем второй файл, в который подключается первый:
<?php
require_once ('require.php');

$DB->select('...'); // В этой строке ошибок не будет

function release()
{
...
$DB->select('...'); // А вот тут - ошибка - Fatal error: Call to a member function select() on a non-object in
...
}


Почему? Как победить?



Спустя 41 минута, 33 секунды (27.01.2010 - 21:36) vasa_c написал(а):
Вы же даже вопрос правильно сформулировали.
а дальше всё просто.

Спустя 16 минут, 51 секунда (27.01.2010 - 21:53) sergeiss написал(а):
Если чуть более подробно...

Внутри функции нету переменной $DB. Надо или передать ее туда (предпочтительный вариант), или сделать глобальной (лучше избегать, хотя это и возможно).

Спустя 4 минуты, 23 секунды (27.01.2010 - 21:57) vasa_c написал(а):
sergeiss, она и так глобальная

Спустя 6 минут, 4 секунды (27.01.2010 - 22:03) Sergey1974 написал(а):
Да... просто оказалось. Просто непривычно после С как-то...
Вот решение:

<?php
require_once ('require.php');
$DB->select('...'); // В этой строке ошибок не будет
function release()
{
global $DB;
...

$DB->select('...'); // А вот тут ошибки больше нету...
...
}

Спустя 51 минута, 16 секунд (27.01.2010 - 22:55) sergeiss написал(а):
Цитата (vasa_c @ 27.01.2010 - 22:57)
sergeiss, она и так глобальная

Я имел ввиду, что изнутри функции она "не глобальная", т.е. не видно. Т.е. то, что ТС сделал в итоге.

И кстати... "В Си" то же самое с видимостью!!! Так что после Си ты не должен был запутаться.

Просто считай основной текст скрипта "функцией main", и тогда с видимостью переменных тебе будет всё ясно и понятно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.