Forums / National / Russian / Тех. поддержка / if ($usr['id'])

Kopusha
#1 2024-05-26 07:39

 С большим удивлением обнаружил что в одной функции не работает переменная $usr['id']
Функция начитается с

global $db, $db_users, $structure, $cfg, $sys, $lang, $cache;
и list($usr['auth_read'], $usr['auth_write'], $usr['isadmin'])

при этом $usr['auth_read'] вполне себе работает а вот ниже если
if ($usr['id']) - условие не работает
При if (cot::$usr['id']) - все ок.

Отчего такое странное поведение?

Kort
#2 2024-05-26 11:19

Потому что в global массив $usr не указан.

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Dayver
#3 2024-05-26 13:23

Дополню что переменная не указана в global потому что переходим на то что б перенести везде доступ ко всем основным переменным движка $L, $db, $cfg, $usr, $sys и т.д. через фасад Cot::  Причем такой переход начат давно в связи с решением проблем глобальной видимости, просто сейчас более активно стали делать эту замену повсеместно в коде. В доках про это упоминается да и на форуме уже стоял такой вопрос потому повторение - мать учения.

Pavlo Tkachenko aka Dayver
Kopusha
#4 2024-05-26 15:36

Паша, Дима - не пинайте) У меня дурдом) Я всюду буду писать cot::)

PS. Дурдом в голове. В коде +- порядок)

Добавлено 52 секунды спустя:

#48044 Dayver:

Дополню что переменная не указана в global потому что переходим на то что б перенести везде доступ ко всем основным переменным движка $L, $db, $cfg, $usr, $sys и т.д. через фасад Cot::  Причем такой переход начат давно в связи с решением проблем глобальной видимости, просто сейчас более активно стали делать эту замену повсеместно в коде. В доках про это упоминается да и на форуме уже стоял такой вопрос потому повторение - мать учения.

Не поленился паразит и пнул с цитатами и ссылками)))

Добавлено 2 минуты спустя:

Тут трагедия - 10летний 3.14здюк вечно меняет пароль на андроид планшете на "бебра" или "бабай_волохатый" и наконец то он его поменял и забыл на какой....
А сбросить тоже не вариант - там Роблокс и тд.... "Папа - тыжпрограмист..."

Kabak
#5 2024-05-26 19:48

А в чём смысл перехода за фасад Cot::  ?    Что есть потребность в глобальных именах $L, $db, $cfg, $usr, $sys   в сторонних плагинах ?  Так пускай в плагинах используют префиксы к своим плагинам.  Зачем утежелять движок этими классами ?

Kort
#6 2024-05-27 06:05
#48046 Kabak:

... Что есть потребность в глобальных именах $L, $db, $cfg, $usr, $sys   в сторонних плагинах ?...

А ты в своих плагинах не используешь ланг-строки? А к базе не подключаешься? А настройки сайта не используешь? А к пользовательским данным не обращаешься?

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Kopusha
#7 2024-05-27 08:16

10 лет пацану. Свободно на трех языках, знает все столицы мира, понимает почему земля зимой ближе к солнцу а не наоброт и!
Пароль - skibiditoilet(

Added 25 seconds later:

Где мы свернули не туда?))))

Kabak
#8 2024-05-27 11:48
#48047 Kort:
#48046 Kabak:

... Что есть потребность в глобальных именах $L, $db, $cfg, $usr, $sys   в сторонних плагинах ?...

А ты в своих плагинах не используешь ланг-строки? А к базе не подключаешься? А настройки сайта не используешь? А к пользовательским данным не обращаешься?

Использую, и зачем префикс cot:: перед $usr ?   в чём цимус занесения всех переменных ядра движка в класс  с именем cot ? 

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

 

Плагины и тем более модули пишет уже 2.5 человека ...   Если только у нас в списке на гит нет багов которые требуют устранения, тогда , конечно , это очень важно все глобальные имена используемыее ядром движка запихать в класс cot   Опять нужно будет ВСЁ перписывать. wink  зато все работают )

This post was edited by Kabak (2024-05-27 13:27, 6 months ago)