global раз и навсегда

O
На сайте с 29.05.2008
Offline
195
1650

Здравствуйте.

Хочу объявить массив глобальным.


<?php
$GLOBAL = [];
function() {
global $GLOBAL;
}
?>

Проблема в том, что глобальный массив, нужно объявлять глобальным (точнее говорить, что нужно использовать глобальный) в каждой подпрограмме (функцией, методе, цикле).

Как объявить раз и навсегда. Чтобы массив был доступен ровно также глобально, как супермассивы _GET, _POST,...?

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#1
ortegas:
$GLOBAL

$GLOBALS[] или $HTTP_SERVER_VARS[] - объявлять не нуна

O
На сайте с 29.05.2008
Offline
195
#2

Ёхан Палыч, это не подходит. Нужен именно новый супермассив.

Alipapa
На сайте с 01.02.2008
Offline
234
#3

Можно хранить массив в $_SESSION

Биржа фриланса - простая и удобная (http://kwork.ru/ref/2541)
O
На сайте с 29.05.2008
Offline
195
#4

Alipapa, а можно и в REQUEST, GLOBALS. Нужны новые супермассивы CONF, LANG, DIR.

bay_ebook
На сайте с 28.05.2010
Offline
111
#5
ortegas:
Alipapa, а можно и в REQUEST, GLOBALS. Нужны новые супермассивы CONF, LANG, DIR.

Вы зря отмели идею, хранить в сессиях не так и плохо.

Ну и раз такая задача - учим ООП


class GlobalConfig{
public static $CONF = 1;
public static $LANG = array();
}

инклудим файл с этим классом и дальше в любой точки скрипта:


function() {
$CONF = GlobalConfig::$CONF;
}
Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
O
На сайте с 29.05.2008
Offline
195
#6

bay_ebook, как раз в ООП сейчас и реализовано. Слишком длинный синтаксис для вызова объектов, которые единожды обрабатываются при старте скрипта.

function() {
$CONF = GlobalConfig::$CONF;
}

Уже лучше global каждый раз писать. Этот оператор работает в 8 раз быстрее за создание новой локальной переменной.

Вчера было CONF_VAR, потом было переписано в Registry::CONF['VAR']. Сейчас понял, что это неудобно и ООП здесь совсем не нужен, а нужен обычный супермассив. Как?

bay_ebook
На сайте с 28.05.2010
Offline
111
#7
ortegas:
bay_ebook, как раз в ООП сейчас и реализовано. Слишком длинный синтаксис для вызова объектов, которые единожды обрабатываются при старте скрипта.

ну вам прям не угодишь :)

В сессиях плохо, в ООП - плохой синтаксис. Ну тогда в константы, если данных не много.

O
На сайте с 29.05.2008
Offline
195
#8

bay_ebook, в константах было изначально. Не устраивать ибо нужна вложенная структура + 1% данных изменяется во время выполнения скрипта. Нужен именно супермассив. GLOBALS вроде бы и подходит, но... заносить LANG, CONF, DIR в один массив? - Нет.

Ну не верю я, что нету возможности создать свой супермассив.

siv1987
На сайте с 02.04.2009
Offline
427
#9

ortegas, никак. Ну вам же советовали в вашей прошлой теме несколько паттернов проектирования.

O
На сайте с 29.05.2008
Offline
195
#10

siv1987, я выбрал регистр. Но не нужен мне он. Мне нужен глобальный массив. Что делать? :(

Или мне так писать _::$CONF чтобы было короче. Нет, ну это же костыли. А обращаться к конфигурациям через Registry::$CONF это ахтунг!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий