Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте. У меня такой вопрос. Предположим что мне нужна какая-то конфигурация, доступная в любой точке проекта. В ней есть какой-нибудь идентификатор пользователя по которому в базе буду храниться различные данные, а также другие данные. Например так:
class Config{
private $_uid;
public function getUid(){
if(empty($this->_uid)){
/* Генерируем uid и сохраняем в переменную */
}
return $this->_uid;
}
}
И далее с помощью инъекций добавляем его куда нужно.
Правильно ли так делать?
Не в сети
Не в сети
Не в сети
Например примерно такой:
class IndexController extends Contoller{
public function index(Config $config){
$items = ItemsModel::whereUid($config->getUid())->get();
}
}
Какое-нибудь подобное использование может потребоваться например в middleware.
Не в сети
Предполагается только конфиг одного юзера. В нем будет содержаться уникальный идентификатор, для получения записей из бд. Например переменная указывающая на то в каком виде предоставлять информацию(список, мозаика) и т.д.
Не в сети
Не в сети
Да, текущего. А в чем преимущество ленивой инициализации перед инъекцией? Просто мне может потребоваться использовать данный конфиг в middleware, моделях. А где будет находиться это юзер проперти?
Не в сети
Не в сети
По факту он никуда не привязан. Эти значения будут находиться в куке в виде сериализованного массива. Когда пользователь заходит на сайт. Данный массив считывается и записывается в конфиг для более удобного обращения. А далее инжектить, как я писал во втором посте. Либо пользовательские объекты так инжектить не получится?
Не в сети
Не в сети
Понял, спс за ответы.
А можно еще пару вопросов не по теме, как к знающему разработчику?
1. Будет ли данная функция генерировать действительно уникальный идентификатор?
protected function _generateUid(Request $request)
{
return uniqid($request->session()->getId(), true);
}
Ведь в данный момент времени не может быть двух пользователей с одинаковым идентификатором сессии.
2. Правильно ли выносить запросы в модель? Например так:
class Price extends Model
public function getBySid(string $sid)
{
try{
return $this->whereSid($sid)->first();
} catch (\Exception $e){
return false;
}
}
}
Не в сети
1) Должна Если второй параметр не задать, то лажает точно при большом кол-ве обращений — проверено на практике.
Идентификатор сессии там уже больше для «перебдеть»
2) Вай нот? Криминала не вижу абсолютно. Можно конечно какой-то репозиторий прилепить, но если ради одного метода — то перебор.
Я стараюсь придерживаться принципа KISS и не городить абстракции ради абстракций…
Не в сети
Понятно, хорошо, спасибо большое за помощь.
Идентификатор сессии там уже больше для «перебдеть» - Да, чтобы 200% уникальный результат получить)
Не в сети
Страницы 1