Size: a a a

2020 October 07

СП

Сергей Предводителев... in Yii Framework 3
Дмитрий
Я о них тоже высказывался когда-то :)
Надо на обсуждение тогда, к чему-то прийти и зафиксировать
источник

RT

Roman Tsurkanu in Yii Framework 3
Сергей Предводителев
Надо на обсуждение тогда, к чему-то прийти и зафиксировать
+
источник

АН

Александр Некрасов... in Yii Framework 3
это нормально что injector пытается отрезолвить string, если значение совподает с названием функции ядра, и отрабатывает как is_callable ?, к примеру date
источник

AM

Alexander Makarov in Yii Framework 3
Дмитрий
С таким подходом фреймворки будут предоставлять readonly-код, который нельзя будет модифицировать.
Зачем мне нужен такой инструмент?
Тут большая разница. С final мы сами решаем что расширяется а что нет. Без final у нас расширяют что угодно и мы это вообще не контролируем.
источник

AM

Alexander Makarov in Yii Framework 3
Неконтролируемое сильно связывает нам руки на тему внутреннего рефакторинга + очень усложняет для конечных пользователей тестирование.
источник

AM

Alexander Makarov in Yii Framework 3
С final невозможность чего-то настроить считается багом и мы его правим.
источник

AM

Alexander Makarov in Yii Framework 3
На тему helper-ов — нет смысла их делать не-final.
источник

AM

Alexander Makarov in Yii Framework 3
Там методы, как правило, статические и изолированные.
источник

AM

Alexander Makarov in Yii Framework 3
То есть extends не даст ровным счётом ничего.
источник

AM

Alexander Makarov in Yii Framework 3
Александр Некрасов
это нормально что injector пытается отрезолвить string, если значение совподает с названием функции ядра, и отрабатывает как is_callable ?, к примеру date
Пример в студию.
источник

Д

Дмитрий in Yii Framework 3
В каждом пакете есть версионирование по semver. Если обновляешься между мажорными версия - проверяй работу, прежде чем комитить в мастер.
Расширение через наследование - всё равно расширение.

Сейчас фреймворк начинает просто закрываться от изменений и некоторые пакеты потенциально станут никому не нужными.

Тем, кому понадобится расширить функционал не пойдут в гитхаб писать issue и делать PR.
Они просто скопипастят исходник хелпера себе и будут пользоваться этим. Еще могут сделать форк от официального пакета и убрать там final :)
источник

АН

Александр Некрасов... in Yii Framework 3
Alexander Makarov
Пример в студию.
создал сущность, задал embed с название Date, и при сохранение, доходит до инжектора, инжектор видит date как is_callable, и пытается резолвить ее, https://github.com/yiisoft/factory/blob/master/src/Definitions/DefinitionResolver.php#L49
источник

АН

Александр Некрасов... in Yii Framework 3
любой параметр название которого будет идентичен названию глобальной функции, будет резолвится как callable
источник

СП

Сергей Предводителев... in Yii Framework 3
Александр Некрасов
любой параметр название которого будет идентичен названию глобальной функции, будет резолвится как callable
ты может не прописал use для своего класса Date и там на самом деле встроенный Date ?
источник

АН

Александр Некрасов... in Yii Framework 3
Сергей Предводителев
ты может не прописал use для своего класса Date и там на самом деле встроенный Date ?
нет, я проверил
источник

АН

Александр Некрасов... in Yii Framework 3
"message": "Missing required argument \"format\" when calling \"date\".",
   "type": "Yiisoft\\Injector\\MissingRequiredArgumentException",
   "code": 0,
   "file": "/var/www/html/dev/project/vendor/yiisoft/injector/src/Injector.php",
   "line": 147,
   "trace": [
       {
           "file": "/var/www/html/dev/project/vendor/yiisoft/injector/src/Injector.php",
           "line": 63,
           "function": "resolveDependencies",
           "class": "Yiisoft\\Injector\\Injector",
           "type": "->",
           "args": [
               {
                   "name": "date"
               },
               []
           ]
       },
источник

СП

Сергей Предводителев... in Yii Framework 3
А Embed покажи
источник

AM

Alexander Makarov in Yii Framework 3
Дмитрий
В каждом пакете есть версионирование по semver. Если обновляешься между мажорными версия - проверяй работу, прежде чем комитить в мастер.
Расширение через наследование - всё равно расширение.

Сейчас фреймворк начинает просто закрываться от изменений и некоторые пакеты потенциально станут никому не нужными.

Тем, кому понадобится расширить функционал не пойдут в гитхаб писать issue и делать PR.
Они просто скопипастят исходник хелпера себе и будут пользоваться этим. Еще могут сделать форк от официального пакета и убрать там final :)
Всегда шли, а тут не пойдут? Почему вдруг? Чем Yii 3 отличается от Yii 2 и Yii 1 в этом плане?
источник

АН

Александр Некрасов... in Yii Framework 3
<?php

declare(strict_types=1);

namespace App\Flight\Booking\Entity\Embedded\Segment;

use Cycle\Annotated\Annotation\Embeddable;
use Cycle\Annotated\Annotation\Column;
use DateTimeImmutable;

/**
* @Embeddable(columnPrefix="date_")
*/
class Date
{
   /**
    * @Column(type="datetime")
    */
   private DateTimeImmutable $departure;
   /**
    * @Column(type="datetime")
    */
   private DateTimeImmutable $arrival;

   public function __construct(DateTimeImmutable $departure, DateTimeImmutable $arrival)
   {
       $this->departure = $departure;
       $this->arrival = $arrival;
   }

   public function departure(): DateTimeImmutable
   {
       return $this->departure;
   }

   public function arrival(): DateTimeImmutable
   {
       return $this->arrival;
   }
}
источник

СП

Сергей Предводителев... in Yii Framework 3
Ну и там где этот Date должен разруливаться для полноты картины
источник