Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать свою суперглобальную переменную? 
V
    Опции темы
animegirl
Дата 15.3.2013, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Что я нагуглила:
http://www.php.net/manual/en/runkit.configuration.php
Если верить описанию, то добавив такого рода строчки в php.ini
Код

runkit.superglobal = _TESTT
runkit.internal_override = 1

можно будет использовать массив $_TESTT как суперглобальную переменную, однако, код:
Код

$_TESTT['test'] = 'test';

function testt()
    {
    echo $_TESTT['test'];
    }

testt();

выдаёт ошибку:
Notice: Undefined variable: _TESTT in /var/www/way.way/public/test.php on line 5
Где я не так поняла мануал?


--------------------
Скажи миру - НЯ!
PM   Вверх
ksnk
Дата 15.3.2013, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



отсюда
Цитата

Это расширение » PECL не поставляется вместе с PHP.

Информация по установке этого расширения PECL может быть найдена в главе руководства Установка PECL расширений. Дополнительная информация, такая как новые версии, скачивание, исходные файлы, информация о разработчике и CHANGELOG, может быть найдена здесь: » http://pecl.php.net/package/runkit.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Gold Dragon
Дата 15.3.2013, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



я использую что-то подобное.. и глобально и доступно и всё моё smile
Код

class GL
{
    /** @var mixed - закрытая переменная - */
    private static $_val = array();

    /** @var mixed - публичная переменная */
    public static $val = null;

    /**
     * Получаем переменную
     * @param $name - имя
     *
     * @return mixed|null - значение переменной
     */
    public static function getVal($name)
    {
        if (self::verVal($name)) {
            $result = unserialize(self::$_val[$name]);
        } else {
            $result = null;
        }
        return $result;
    }

    /**
     * Сохраняем переменную
     * @param null  $name  - имя переменной
     * @param mixed $value - содержание переменной
     * @param bool  $flag  - флаг проверки
     *      - TRUE (по умолчанию) - игнорировать проверку на существование переменной
     *      - FALSE - сохранять если такой переменной нет
     */
    public static function setVal($name = null, $value, $flag = true)
    {
        if ($flag) {
            if (!self::verVal($name)) {
                self::$_val[$name] = serialize($value);
            }
        } else {
            self::$_val[$name] = serialize($value);
        }
    }

    /**
     * Проверяем существует ли переменная
     * @param null $name - имя переменной
     *
     * @return bool - TRUE - есть, FALSE - нет
     */
    public static function verVal($name = null)
    {
        $result = array_key_exists($name, self::$_val);
        return $result;
    }
}


а вот как использую

Код

// сохраняем объект
$class = new stdClass();
$class->id = 1;
$class->name = 'Name';
GL::setVal('qwerty1', $class);

// Сохраняем массив
$array = array('2','primer 1','primer 6', 'qwerty', 5);
GL::setVal('qwerty2', $array);

// Проверяем
var_dump(GL::verVal('qwerty1'));
var_dump(GL::verVal('qwerty2'));
var_dump(GL::verVal('qwerty3'));

// Получаем
var_dump(GL::getVal('qwerty1'));
var_dump(GL::getVal('qwerty2'));
var_dump(GL::getVal('qwerty3'));


ну или простое использование с собственным контролем что и как хранить
Код

// сохраняем
GL::$val = 222;
// получаем
echo GL::$val;



или как в вопросе
Код

GL::$val['test'] = 'test';
function testt()
    {
    echo GL::$val['test'];
    }
testt();


Код

GL::setVal('test', 'test');
function testt()
    {
    echo GL::getVal('test');
    }
testt();



Это сообщение отредактировал(а) Gold Dragon - 15.3.2013, 17:23


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
animegirl
Дата 17.3.2013, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



ksnk
Цитата

WARNING: 0.9 does not compile with PHP 5.2+ so use the CVS version instead.

Что такое CVS?


--------------------
Скажи миру - НЯ!
PM   Вверх
MoLeX
Дата 17.3.2013, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



animegirl, бан в гугле?
http://ru.wikipedia.org/wiki/CVS


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
animegirl
Дата 17.3.2013, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



MoLeX, Я просто не поняла, что делать в итоге :(


--------------------
Скажи миру - НЯ!
PM   Вверх
Fortop
Дата 17.3.2013, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



animegirl, лучше не делать.

Зачем тебе эта суперглобальная переменная?

Добавлено @ 21:39
собирать модуль и ставить его руками.

Это сообщение отредактировал(а) Fortop - 17.3.2013, 21:40


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
animegirl
Дата 17.3.2013, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Да надоело в каждой функции прописывать список всего что надо, чисто эстетический вид и простота в чтение кода.

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


--------------------
Скажи миру - НЯ!
PM   Вверх
Fortop
Дата 17.3.2013, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(animegirl @  17.3.2013,  21:42 Найти цитируемый пост)
Да надоело в каждой функции прописывать список всего что надо, чисто эстетический вид и простота в чтение кода.

Возможно стоит пересмотреть архитектуру? smile

Писать все что нужно в каждой функции не обязательно


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
animegirl
Дата 18.3.2013, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Ну просто много функций, где нету результата типа false/true  а какие-нибудь данные возвращаются, хочется это межскриптно упорядочить.


--------------------
Скажи миру - НЯ!
PM   Вверх
Fortop
Дата 18.3.2013, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(animegirl @  18.3.2013,  00:49 Найти цитируемый пост)
Ну просто много функций, где нету результата типа false/true  а какие-нибудь данные возвращаются, хочется это межскриптно упорядочить. 

Почему эти данные не могут возвращаться из функции?
Зачем их обязательно передавать через суперглобальные переменные?

Код

function getArray() {
    return [1,2,3,4,5];
}

$a = getArray();




--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
animegirl
Дата 18.3.2013, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Для удобства, не более и не менее


--------------------
Скажи миру - НЯ!
PM   Вверх
Fortop
Дата 18.3.2013, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



animegirl, Если только для удобства, то и пользуйтесь $GLOBALS

Добавлено через 53 секунды
Но в целом, ограничение области видимости для возвращаемых результатов дает много больше удобства. И чем крупнее программа, тем неудобнее суперглобальные переменные


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
animegirl
Дата 18.3.2013, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Fortop, Была такая мысль, но ведь если найти багу для инжекта, его можно вывести дампом, по этому хотелось переменную свою )


--------------------
Скажи миру - НЯ!
PM   Вверх
Fortop
Дата 18.3.2013, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(animegirl @  18.3.2013,  01:50 Найти цитируемый пост)
но ведь если найти багу для инжекта, его можно вывести дампом, по этому хотелось переменную свою ) 

Кто помешает вывести эту самую "свою"?

Код

print_r(get_defined_vars());



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1108 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.