Создание глобальной переменной из функции

Статус
В этой теме нельзя размещать новые ответы.

soulhunter

Новичок
Создание глобальной переменной из функции

В общем задача простая, только не нашёл как реализовать:
Переменная определяется в функции и нужно чтобы эта переменная потом была видна скрипту как обычная переменная

Пример:

PHP:
// some code

function xxx ($xxx)
{
$db = new db;
}

$db->select('some query');
Просто подстановка оператора global ни до создания переменной ни после не помагают...
Почему переменную необходимо создавать именно в функции не спрашивайте плиз, просто так надо )
 

soulhunter

Новичок
Это понятно, но так не пойдёт, мне нужно именно как я написал, а не через суперглобальные массивы... Если есть способ - скажите, если считаете что нет - то тоже так и скажите )
Ну естессно подразумевается что register_globals = Off
 

soulhunter

Новичок
Ну при том, что пример Апокалипсис сработал бы если бы register_globals была бы включена

-~{}~ 14.02.08 03:08:

Хотя нет, ввёл вас в заблужнение, прошу прощения, изначально вопрос поставлен не совсем правильно, я думал что одна маленькая деталь не имеет значения, а щас протестировал и оказалось что имеет! Дело в том, что эта перменная которая должна быть потом доступна в скрипте является ссылкой!

PHP:
// some code

function xxx ($xxx)
{
$db = new db;
$link = &$db;
}

$link->select('some query');
Вот так в точности обстоит дело. А если без ссылки - то всё решается оператором global. Ну и конечно же сам объект $db не прекращает своё существование после работы фукнции, он записывается в некий глобальный архив объектов...
 

FractalizeR

Новичок
PHP:
function xxx ($xxx, &$link)
{
   $db = new db;
   $link = &$db;
}
Только вообще зачем это? Какой-то извращенный способ создавать объект подключения к БД...

Не проще инкапсулировать работу с БД в класс и сделать этот класс синглтоном? Или просто создавать экземпляр этого класса один раз и присваивать глобальной переменной?
 

soulhunter

Новичок
И вариант возвращения по ссылке тоже не подходит!

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

Там у меня очень сложный механизм доступа к объектам через перегрузку, все классы создаются определённым библиотекарем, это долго всё расписывать зачем это надо...
 

FractalizeR

Новичок
Вы пытаетесь реализовать какую-то неестественную вещь, что означает, скорее всего, что вы неправильно ставите себе задачу.

Вы толком объяснить можете, почему предложенные варианты не походят? Чем плохи суперглобальные массивы? Чем ссылка плоха?
 

soulhunter

Новичок
Ну зачем задавать вопрос о том что я хочу сделать и пытаться сказать что я что-то не так делаю даже не зная о чём речь идёт?
Я же спросил абсолютно конкретный вопрос... Вы предложили решение, спасибо, я вам благодарен, но мне конкретно в данной ситуации это не подходит, это всё, далее не зачем обсуждения заводить. Суперглобальные массивы и ссылки не плохи, но мне в данной ситуации не подходят.
По видимому решения такого с ходу нету, ну ладно, подумаю ещё либо буду думать как сделать по-другому...
 

jonjonson

Охренеть
soulhunter, начнём с того, что вы не определяете переменную, а скорее объект, с единственной версией которого и хотите работать. В php это реализуется через паттерн singleton. Реализация зависит от версии php.
 

Фанат

oncle terrible
Команда форума
Ну зачем задавать вопрос о том что я хочу сделать
Затем что ты задаешь дурацкий вопрос, но при этом почитаешь себя гуру.

А тот факт, что ты стесняешься описать реальную задачу, говорит о том, что и сам понимаешь, что делаешь глупость.

На этом форуме общаются профессионалы, а не дают друг другу советы ламеры.

-~{}~ 14.02.08 10:40:

FractalizeR, я тебя не узнаю =)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху