Собственная суперглобальная переменная в PHP?
Я читал что-то о SuplerGlobals, например, $_SERVER или (см. Подробнее PHP Manual Superglobals) на днях, теперь я спрашиваю меня:
Можно ли реализовать собственные суперглобалы? Помимо констант...
Так, например, пользователь A записывает в переменную что-то, что, если пользователь B вызывает, это может видеть. Что-то вроде серверной переменной сеанса или что-то в этом роде.
Пожалуйста, не беспокойтесь, если это глупый вопрос:) Я знаю, что есть несколько способов, как SQL, Xml и Stuff, но, возможно,...
5 ответов
PHP не имеет контекста, который может быть разделен между пользователями. Вы должны заменить, например, SQL-сервер или файл. Вы также можете проверить некоторые расширения, такие как memcache, которые могут помочь вам в достижении вашей цели.
Вся ваша идея о суперглобалах PHP это неправильно.
Эти переменные всегда доступны с точки зрения только одного времени выполнения сценария, а не всего сайта.
Я читал что-то о SuplerGlobals, например, $_SERVER или (см. Подробнее PHP Manual Superglobals) на днях, теперь я спрашиваю меня:
Можно ли реализовать собственные суперглобалы? Помимо констант...
Да, это возможно, если у вас есть расширение PHP runkit.
Так, например, пользователь A записывает в переменную что-то, что, если пользователь B вызывает, может видеть
Это не то, что делают суперглобалы - это переменные, которые существуют в глобальной области видимости (то есть на время экземпляра скрипта).
Если вы хотите обмениваться данными между различными вызовами, то вам необходимо отправить их на уровень хранения или (в случае данных для одного клиента) в браузер.
Так как то, что вы здесь описываете, фактически является общим сеансом, то разумное место для реализации этого будет в обработчике сеанса.
Это невозможно, вы можете видеть только свои собственные данные сеанса.
Для этого вам нужно будет хранить данные в другом месте. в текстовых файлах или в базе данных MySQL будет наиболее распространенным.
Я полагаю, вы можете использовать (asterix)export yourvar="something"(asterix)
и получить его с помощью getenv
sry, не знаю, как встраивать asterix=`, но лучше этого избегать...
Если вы используете apache, можно использовать следующее: http://php.net/manual/en/function.apache-setenv.php
та же идея, переменная enveroinment