Dmytro 🇺🇦
https://www.youtube.com/channel/UCErY35YqTw7SRp2YPIlrQ_A
Niko
Благодарю!
Stas
Dmytro 🇺🇦
@ASYOU99 Днепр. А ты?
Stas
местный
Stas
тобишь обитаю в месте проведения конфы:)
Borys
Ребят, а что с строгой типизацией?
Borys
Если объявлю в web/index.php по всему проекту же пойдет поидее?
Dmitriy
нет.
Borys
В каждом файле объявлять если необходимо?
Dmitriy
да
Borys
Спасибо.
Borys
Что-то не сильно пойму.
если в функцию передается integer, а тип аргумента объявлен string, в итоге функция получит преобразованное string значение
т.е.
function someName (string $var) {
return $var;
}
someName(33);
получу
"33"
Dmytro 🇺🇦
Stas
Stas
а что:?
Dmytro 🇺🇦
Borys
т.е.
declare(strict_types=1);
function someName (string $var)
{
return $var;
}
var_dump(someName(33));
без declare функция преобразовывает мой int в string
Borys
хотя я указал что $var должен быть строкой
Borys
и еще нельзя включить глобально строгую типизацию и нужно лепить declare() в каждый файл?
Borys
The Ant
The Ant
The Ant
https://wiki.php.net/rfc/scalar_type_hints_v5
Niko
@AlDexor объект вообще не закидывается в очередь без гидратора. Однако вложенный объект, принимаемый в корструкторе, даже с гидратором не принимается. Я сделал service, в который поместил все нужные методы для очереди и передал его гидратором в очередь. Но думаю это костыль
The Ant
The Ant
их там несколько вроде
Niko
Там есть еще PhpSerializer, но он не захотел работать
Пойду посмотрю еще на его ошибки, возможно исправлю. Хотелось бы конечно использовать нормальные, ранее написанные классы
Niko
спасибо! Я пока все делал и забыл про него
Niko
@AlDexor Даа!!! PhpSerializer заработал. Не знаю, что у меня в первый раз не получалось. Но сейчас все работает. Спасибо за подсказку
Borys
http://joxi.ru/KAgYdNEigO5wOm?d=1
Borys
Прокачиваюсь, читаю статью, возник вопрос.
Borys
В yii2 приходится пользоватся вот таким способом отказавшись от конструктора. Правильно ли я понимаю что эта проблема возникает из-за yii2+AR?
Borys
Borys
В symfony используется DM? И с конструкторами все ок?
Anonymous
Всем привет! Кто-нибудь знает как сделать красиво и изящно следующее. Есть модель, у нее есть свойство name. Мне нужно сделать что бы при сохранении проверялось существует ли модель с таким именем. И если уже есть, брать эту модель и обновлять, а не создавать новую.
SiZE
$model = Model::find()->name($name)->limit(1)->one();
if ($model === null) {
$model = new Model();
$model->name = $name;
$model->save(false);
}
Anonymous
Пасибо. А как что бы в других местах не переписыват?
Anonymous
Или прямо в модели как то задать
Dmitriy
Dmitriy
Nikolay
Anonymous
в сервис.
SiZE
Dmitriy
в Query можно
SiZE
у меня гусиная кожа появляется от одной такой мысли
Anonymous
что плохого в createOrUpdate() ?
Alex
Пиши сервисы с такими методами если оч хочется
Alex
но модель такого не должна иметь
Anonymous
SiZE:
$model = Model::find()->name($name)->limit(1)->one();
if ($model === null) {
$model = new Model();
$model->name = $name;
$model->save(false);
} Те проще все таки так писать
Dmitriy
Anonymous
class ModelService
{
public function createOrUpdate($name)
{
$model = Model::find()
->where(['name' => $name])
->limit(1)
->one();
if ($model) {
$model->name = $name;
} else {
$model = new Model();
$model->name = $name;
}
if (!$model->save(false)) {
throw new \RuntimeException('Saving error.');
}
return $model;
}
}
... in controller
$model = $this->service->createOrUpdate($name)
Вроде норм.
Dmitriy
if ($model === null) {
Еще хуже выглядит
SiZE
SiZE
Anonymous
ну можно в кверик byName, но тут это ед. место скорей всего будет, чего заморачиваться.
Dmitriy
Alex
Alex
юии походу не делает лимитацию автоматом)
Alex
типа вытягивает все и потом уже фильтрует
Anonymous
хоспади, это пример накиданый быстренько, чего ты мне разнос устраиваешь :)
Anonymous
ну про one(), да, он limit() не добавляет.
Kirill
а почему бы и нет, другим полезно почитать
SiZE
SiZE
Anonymous
Я не знаю чо ты там делаешь.
Есть форма с динамическими полями. В полях название лекарств . Типа вводишь парацетомол и если он уже есть то просто привЯзать его к рецепту а не создавать новый
Anonymous
ооох, тут надо быть осторожным с правильностью набора названия, одна опечатка и у нас парацетомол и порацетомол :)
Anonymous
(ну хотя хз, как там у тебя)
SiZE
парацетомол и порацетомол это точно =)
Anonymous
Анальгин в общем
Anonymous
интересно, как с этим бороться? Делать мега автодополнение? Выпадающий список?
Anonymous
Кажется выпадающий список с поиском само ok.
Anonymous
Ну я думал да сделать выпадающий список
Anonymous
если нет в списке, зашёл в справочник и добавил.
Anonymous
select2 какой-нибудь.
Anonymous
Ну надо сделать что бы из одной формы создавался или привЯзывался если уже есть
Dmitriy
1. оно для этого и нужно
Не согласен. RuntimeException это не неконтролируемые исключение.
А сохранение мы должны контролировать