Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для ChildOfFlowers
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,093

Своя специальная переменная

19.04.2020, 11:50. Показов 1564. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не знаю, насколько правильно я сформулировал заголовок... в общем, мне нужно следующее:
Есть глобальная переменная, допустим, $GLOBALS['current_page']['qwerty']. Естественно, мне не удобно писать столько букв много раз в коде, да это и не читабельно. Мне бы хотелось определить свою специальную переменную $QWERTY, которая бы ссылалась на вышеупомянутую. Как мне это можно сделать? И на сколько это правильно вообще?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.04.2020, 11:50
Ответы с готовыми решениями:

Специальная функция
Подскажите бесконечную простую функцию как синус и т.д. Чтобы кривая была гладкая и похожа на эту: Желательно с регулировками.

Специальная вставка
Добрый день. подскажите пожалуйста, в чем может быть причина разной вставки одного и того же диапазона в разных версиях MS Excel (2007 vs...

Специальная сортировка массива
Дан числовой массив размера N. Наименьший из элементов массива поместить на первое место в массиве, наименьший из оставшихся — на...

24
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
22.04.2020, 13:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
С другой стороны, наличие таких важных переменных как $_SESSION, мне кажется, должно быть задукоментировано для каждой версии php. Т.е., она не должна пропасть ни с того, ни с сего...
Вы не поняли. Функции моделей могут использоваться не только в скриптах, запускаемых Web-сервером

Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
Это правило я для себя ввёл, чтобы не путаться в собственном коде. Глобальные значения размещаю глобально, в аргументах передаю только то, что относится непосредственно к функции.
Ну, например, $user относится к функции getUserProfile И так со многими подобными функциями. В глобальной области видимости можно оставить, например, только переменную для хранения соединения с базой данных. Вообще старайтесь поменьше использовать глобальные переменные. Так можно еще больше запутаться, т.к. их (значения) сложнее контролировать, держать в "фокусе зрения" и т.п.

Добавлено через 16 минут
Т.е. в контроллере можете использовать $_SESSION['user'], а в модель передавайте ее значение при помощи параметра или обычной глобальной/инкапсулированной/изолированной переменной. Получать подобные значения от моделей можно в виде значений функций.

В принципе можно создать какую-нибудь вспомогательную для контроллера функцию и назвать ее, например, getUserProfileBySession

При этом опять-таки можно передавать имя в необязательном аргументе функции:
PHP
1
2
3
function getUserProfileBySession($user='user')
{
    echo $_SESSION[$user];
0
 Аватар для ChildOfFlowers
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,093
23.04.2020, 09:01  [ТС]
Цитата Сообщение от estic Посмотреть сообщение
Вы не поняли. Функции моделей могут использоваться не только в скриптах, запускаемых Web-сервером
Вот теперь я точно не понял. Что за функции моделей, и где они ещё могут запускаться?
Цитата Сообщение от estic Посмотреть сообщение
Вообще старайтесь поменьше использовать глобальные переменные. Так можно еще больше запутаться, т.к. их (значения) сложнее контролировать
Я ими не злоупотребляю. Да и при желании вряд ли бы смог. Ведь объектов, которые действительно нужны глобально совсем не много. У меня это только user и current_page. И контролировать их особо нет нужды. Ведь они специального, а не общего назначения. Поэтому их изменение происходит только в определённых, предусмотренных случаях.
Насчёт контроллера не очень понял вашу мысль. Вы предлагаете создать отдельную функцию, которая будет просто читать/писать переменную? Если так, то я с этим в корне не согласен.
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,954
23.04.2020, 11:49
Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
Что за функции моделей, и где они ещё могут запускаться?
Ну, например, в скриптах, запускаемых cron-ом (по таймеру сервера). Это функции, реализующие действия с объектами без их привязки к действиям пользователя, - как-то так

Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
Насчёт контроллера не очень понял вашу мысль. Вы предлагаете создать отдельную функцию, которая будет просто читать/писать переменную?
Нет, вы же вроде ранее что-то про работу с базой данных писали. В предыдущем сообщении я имел в виду что-то наподобие этого (echo - это только для демонстрации того, как обращаться):
PHP
1
2
3
4
5
6
function getUserProfileBySession($user='user')
{
    // проверка сессионной переменной, ее значения
    // затем, если все в порядке, обращение к функции модели
    return getUserProfile($_SESSION[$user] или $_SESSION[$user]['id']);
}
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.04.2020, 10:35
Посмотрите в сторону шаблона реестра. Это, конечно, не очень хороший паттерн, но уж явно лучше использования $GLOBALS и т.п. будет. Пример - https://designpatternsphp.read... EADME.html
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
24.04.2020, 11:57
Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
на сколько это правильно вообще
занимаетесь ерундой. если вам хочется определить какую-то специальную переменную, то зачем ее перед этим определять в глобальной. а если ее там определили, то так используйте. единственное, если вы внутри функции хотите как-то покороче код сделать, то используйте extract($GLOBALS['current_page']). а если это городить в глобальной области - то только ссылками, как советовал dontknow. но зачем тогда $GLOBALS?
Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
Естественно, мне не удобно писать столько букв
если вы пишите в блокноте, то это, конечно, неудобно. нормальные редакторы автоматически подставляют доступные названия (называется автозавершение, или автоподстановка). неудобно будет потом вспоминать, для чего эта переменная. поэтому советуется наоборот, давать большие, осмысленные названия переменным, которые будут информировать о ее назначении. на скорость выполнения кода это также никак не влияет
Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
это и не читабельно
как раз это-то и читабельно. сравните $cnt и $visitors_count и $online_bots_count
Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
Есть глобальная переменная
это уже плохо хотя бы потому, что хранение в ней данных менее безопасно, чем в реестре. доступ к данным в ней открыт, в реестре это делается через методы, причем можно хранить данные так, что их невозможно изменить. ну и в больших проектах есть большой риск случайного изменения переменной.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2020, 11:57

Специальная теория относительности
Две частицы движутся навстречу друг другу со скоростями v1=2,7· 10^8 м/c и v2=2,1·10^8м/с по отношению к лабораторной системе отсчета....

Специальная правая часть
Не получается решить д.у. со специальной правой частью y-y''=-1

Специальная задержка curl
При загрузке сайта к которому подключаюсь через curl некоторая часть его HTML подгружается с задержкой несколько секунд через JS. Curl не...

Специальная графика. Функция ROSE
Добрый день. Имеется задание описать все возможные варианты синтаксиса функции rose в matlab с примерами использования. С тремя...

Куда специальная вставка-то делась?
Щас установил VS 2019 и обнаружил, что отсутствует спец вставка. Как так то? и как с этим бороться?)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru