Pull to refresh
4
0
Александр @BoShurik

Symfony-разрботчик

Send message

Ну, кстати, из этого FAQ видно, что для вашей целевой аудитории не особо важно количество игроков онлайн

Most Photon multiplayer games have 2-16 players
There are Photon games live with 32 or even 64 players

Откуда желание повысить онлайн? Это какой-то запрос от реальных разработчиков игр? Или просто цель с потолка?

При этом, надо сказать, что лично у меня сложилось ощущение, что BrowserQuest сильно выигрывает у вашего Игоря по отзывчивости (и там и там было по одному игроку).

Вам нужно сделать что-то аналогичное, потому что техническая демка - это не то, чем нужно заманивать, а вот на BrowserQuest я залип надолго (и соответственно тыкался в ней минут 30, в отличие от вашей игры, где меня хватило на пару минут)

2.Тоже жду эту фичу. Проголосовать можно тут: https://youtrack.jetbrains.com/issue/IDEA-228145

PHP выполняет проверки типов в runtime.Значит, все аргументы дженериков должны быть доступны через reflection в runtime.А этого не может быть, потому что информация о аргументах дженериков после генерации конкретных классов стирается.

Как вариант - добавить в сгенерированые классы атрибуты, в которых уже эти данные предоставить

Я бы посмотрел на тесты этого класса

Увы, да. В RFC как раз есть пример:

$qb->select('u')
   ->from('User', 'u')
   ->where('u.id = ' . $_GET['id']); // INSECURE

Это как раз сделано для того, чтобы в query builder нельзя было передать пользовательский ввод. Только через placeholder-ы

  1. В 5.3.0 эта проблема исправлена


  2. Можно сохранять результаты парсинга в аттрибуты реквеста, а в декораторе к ArgumentResolverInterface удалять этот ключ


    if ($request->attributes->has('_parsed_json')) {
    $json = $request->attributes->get('_parsed_json');
    } else {
    $json = json_decode($request->getContent(), true);
    $request->attributes->set('_parsed_json', $json);
    }

Можно сделать через соглашение. Сначала искать по имени аргумента


$json = \json_decode($request->getContent(), true);
if (array_key_exists($argument->getName(), $json)) {
    $dto = $this->denormalizer->denormalize($json[$argument->getName()], $argument->getType(), 'json');
} else {
    $dto = $this->serializer->deserialize($json, $argument->getType(), 'json');
}

Можно воспользоваться благами php8


public function userAction(
    #[FromKey('user')] User $user,
    #[FromKey('fruit')] Fruit $fruit
)

$attribute = $argument->getAttribute();
if ($attribute instanceof FromKey) {
    $json = \json_decode($request->getContent(), true);
    $model = $this->denormalizer->denormalize($json[$attribute->key], $type, 'json');
} else {
    $model = $this->serializer->deserialize($request->getContent(), $type, 'json');
}

Чем не устроил symfony/serializer?

Увидел. Спорно, все-таки сама статья не об этом. И мне кажется, не хватает хаба "Я пиарюсь", т.к. по ссылке просят 8к рублей за реализацию шаблонов на PHP

А при чем тут php?

Почему сразу не передавать MailEventInterface?


NotificationService::notify(MailEventInterface $event): void;

Заодно можно будет избавится от массива, а сразу передавать нужные параметры в эвент. В противном случае каждый раз надо будет заходить в реализацию makeNotificationEvent, смотреть какой эвент должен создаться при order_created и какой массив параметров он ожидает


public function createOrder(CreateOrderRequest $request)
{
    $this->notificationService->notify(new OrderCreatedEvent($order)); 
}
Можно ли использовать сервисы внутри сервисов?
Я бы однозначно не рекомендовал такую практику, так как этим вы нарушаете single responsibility принцип, делая ваш код, к тому же, достаточно запутанным.

Тут нет ошибки? Потому что во втором пункте вы по сути предлагаете использовать сервисы (OrderService и NotificationService) внутри сервиса (CreateOrderOperation)

Получается, если разработчик решил порефакторить код, а работа с переводами уже закончена, т.е. никто в админку не зайдет и не увидит этих сообщений, то могут быть проблемы?

Часто возникает дилемма — использовать существующий текст или создать новый? А вдруг в этом новом месте чуть-чуть другой контекст?

А вот эта проблема как решается? К примеру у нас есть одна и та же фраза, но в разных файлах и, соответственно, разный контекст. Правильно я понимаю, в админке будет зарегистрированы две фразы и соответственно то, где они вызываются, и переводчикам самим предлагается определить контекст перевода?
А если вдруг мы код отрефакторили и теперь эти фразы вызываются из другого места?

Как планируется вычленять переменные из строк?


We are glad to have you back {$name}

И все-таки какие критерии?


composer create-project mezzio/mezzio-skeleton mezzio
composer create-project symfony/skeleton symfony

Размер:


15M ./mezzio
9,1M    ./symfony

Количество файлов в скелете?


cd ./mezzio
git status | grep 'new file' | wc -l
      31
cd ./symfony
git status | grep 'new file' | wc -l
      19

Information

Rating
Does not participate
Location
Владимир, Владимирская обл., Россия
Date of birth
Registered
Activity