Суперглобальные переменные

yurash

Guest
Суперглобальные переменные

Возможно, ли определить самому свои переменные, чтобы область видимости у них была бы как суперглобальных типа $_POST, $_GET
 

yurash

Guest
нет $GLOBALS[] не подходит
Хотелось бы обявить класс $_SITE который был бы доступен везде и не прописывать каждый раз $GLOBALS['_SITE']
 

Nirva

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

yurash

Guest
to Фанат: не так выразился переменную $_SITE которая будет указателям на класс

-~{}~ 22.06.04 17:07:

Nirva
да можно и так придеться только в global прописывать одну переменную, но хотелось обойтись без global дерективы
 

Фанат

oncle terrible
Команда форума
yurash
сакажи, а что ты подразумеваешь под словом "класс"?
ты не путаешь с массивом?
 

Nirva

Dmitry Polyakov
полагаю, человек хочет создать просто суперглобальную переменную-указатель без использования вообще чего-либо.
нет, такого делать нельзя, это в обход логики языка. полагаю так же, что стоит перечитать раздел документации "Область видимости переменной" и еще раз задуматься, что это не так страшно =)
 

yurash

Guest
класс я подразумеваю $_SITE = new SiteClass(); и просто хочу переменную $_SITE в любой функции, так как вижу переменные $_GET, $_POST

Nirva в чем я обхожу логику языка если существуют суперглобальные переменные
 

lucas

Guest
yurash

Используй статические методы класса и (если нужно) паттерн singleton.
 

yurash

Guest
Наверное я не правильно задал вопрос :(
В меня например есть главный класс SiteClass, $_SITE = new SiteClass(); и есть класс DBClass, $_DB = new DBClass();
теперья создаю модуль который овормлен тоже в виде класса ModuleClass, $_MODULE = new ModuleClass();

так сейчас
PHP:
class ModuleClass {
  function countRecord() {
    global $_SITE, $_DB;
    $result = $_DB->queryValue("SELECT name FROM mytable WHERE id = 1");
    $_SITE->Out .= $result;
  } 
}
а хотелось бы
PHP:
class ModuleClass {
  function countRecord() {
    $result = $_DB->queryValue("SELECT name FROM mytable WHERE id = 1");
    $_SITE->Out .= $result;
  } 
}
 

confguru

ExAdmin
Команда форума
Что-то вроде?

PHP:
class ModuleClass { 
  function countRecord() { 
    $this->SITE->Out .= $this->DB->queryValue("SELECT name FROM mytable WHERE id = 1");   } 
}
 

yurash

Guest
а в конструкторе делать
PHP:
global $_SITE;
$this->SITE =& $_SITE;
:)
 

lucas

Guest
yurash

Ну, во-первых, от global'а можно избавиться (минус строчка, хе-хе).
А во-вторых, чем не подошел мой вариант?
 

yurash

Guest
lucas
PHP:
$this->SITE =& $GLOBAL['_SITE'];
Пример кода плиз на счет статических методов.
 

lucas

Guest
PHP:
class db
{   function connect()
     {   // ...
          return $connection ;
     }
}

// Экземпляр не создан!

$connection = db :: connect() ;
Про singleton можно почитать банально вбив это слово в Яндекс/Гугл.
 

yurash

Guest
остановлюсь на инициализации переменных в конструкторе тем более все можно сделать в родителе.
Но всет аки хотелось обявить свою переменную как суперглобальную.

singleton - ничего не получаеться та как при обращении после создания к методам класса не возможно
 
Сверху