Аватар для ChildOfFlowers
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,093

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

19.04.2020, 11:50. Показов 1524. Ответов 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,936
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,936
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru