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

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

19.04.2020, 11:50. Показов 1472. Ответов 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
1317 / 1009 / 232
Регистрация: 01.10.2018
Сообщений: 3,917
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
1317 / 1009 / 232
Регистрация: 01.10.2018
Сообщений: 3,917
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
Ответ Создать тему
Новые блоги и статьи
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru