Задаване на глобално наличен код в Yii2 за една заявка

Използвам Yii2 и имам ситуация, в която искам да направя някакъв код глобално достъпен, но само за тази заявка.

Моят случай на използване се основава на този въпрос където правя някои проверки на разрешения чрез matchCallback.

Трябва да изпълня няколко различни проверки на разрешения и ако не мога да ги направя всички на едно място чрез matchCallback (тъй като не мога да осъществя достъп до всички данни, от които се нуждая, изглежда точно в този момент) - тогава се опитвам за да избегнете повторното изпълнение на заявката.

Така че се чудех дали мога да съхранявам данни, извлечени от базата данни, като JSON кодиран масив с разрешения в моята matchCallback функционалност, за да мога след това да получа достъп до този масив в рамките на друго действие.

Знам, че мога да използвам flash data, но изглежда, че е по-предназначено за заявката next. Има ли нещо налично само за текущата заявка или все пак трябва просто да използвам flash data?


person Brett    schedule 01.07.2015    source източник
comment
Не можете ли просто да кеширате резултата от вашите заявки и да ги извлечете по-късно? Кеширането изглежда изпълнява това, което търсите.   -  person Joe Miller    schedule 01.07.2015
comment
@JoeMiller Е, все пак повечето заявки не са ли кеширани по подразбиране? Времето за повторно изпълнение на заявката обаче ще бъде много по-дълго, отколкото за извличане на данните от глобална променлива например.   -  person Brett    schedule 01.07.2015


Отговори (1)


Чудя се каква би била най-добрата практика и тук... Що се отнася до мен, бих използвал Yii::$app->params масив за тази цел. Не изглежда много добре, тъй като се нарича „параметри“ и се предполага, че са някои персонализирани параметри като „adminEmail“ и т.н. Но работи добре: може да се чете и пише отвсякъде и ако зададете някои от неговите ключове или стойности динамично, ще дълго само за тази конкретна заявка - точно това, което искате. това е като:

Yii::$app->params['myKey'] = $myValue;
...
$myValue = Yii::$app->params['myKey'];
person Pavel Bariev    schedule 01.07.2015
comment
Хм вярно. Определено идея за обмисляне. Ще оставя това отворено за известно време и ще видя дали има нещо правилно да го направя, но може да се сведе до необходимостта да използвам това решение. наздраве! - person Brett; 01.07.2015
comment
Да, и аз ще се радвам да видя по-добър избор. - person Pavel Bariev; 01.07.2015