Перечитал. Вы пишите что у вас толстые пальцы и поэтому вы дропаете базы на проде. И ещё что вы перечитываете свой код (какая глупость). При слепом наборе вы постоянно смотрите на экран и вам ничего перечитывать не нужно. Попробуйте.
Ну кто бы ещё написал самый длинный и популярный ответ в статье по GO? Спасибо)
Ох и вымотал меня Владимир Владимирович Шахиджанян в своё время с «фыва» и «олдж» и т.п. Я раз 6 начинал, но все же прошёл. Действительно намного удобнее и приятнее набирать стало...
А с чего вы взяли что слепой десятипальцевый набор текста = не думать?
null?
«Трасса 60». Там было похожее: ночью гуляют и употребляют, а днем отрабатывают. Всем профит.
Серьёзно?
Ну тогда тот вариант что ты выбрал (убрав возвращаемый тип в IPayloadFactory.create()) смотрится как самый логичный, учитывая особенности PHP. Хотя, я не вижу особой разницы если использовать подход, предлагаемый в RFC (обозначить тип как Payload и возвращать нужный ChildPayload). Все равно ведь при твоем подходе ты будешь инжектить переменную с типом Payload и соответственно никакого выигрыша от IChildPayload я не вижу.
Не совсем так. Объект, который вернется из класса В будет удовлетворять контракту интерфейса А, но при этом будет иметь расширенные возможности класса В. Что и есть полиморфизм.
В твоем случае я не совсем понимаю какой вообще смысл в interface IPayloadFactory если ты его вообще не используешь и если ты не хочешь использовать полиморфизм, то зачем вся эта архитектура с наследованием?
К сожалению, RFC не позволяет ковариантность в возвращаемых типах при наследовании. Вот выдержка из этого самого RFC:
The enforcement of the declared return type during inheritance is invariant; this means that when a sub-type overrides a parent method then the return type of the child must exactly match the parent and may not be omitted. If the parent does not declare a return type then the child is allowed to declare one.А вот ссылка на сам RFC: wiki.php.net/rfc/return_types
interface A {
static function make(): A;
}
class B implements A {
static function make(): A {
return new B();
}
}
Т.е. в самом методе возвращаемый тип ты указываешь как в интерфейсе, а вот возвращаешь «расширенный» тип.Я же сказал что ничего против него не имею. Но «воспитание чемпионов» и занятия в группах — разные вещи. Для чемпионов отдельные занятие и другой подход.
Может быть я не совсем верно выразился. Я имел ввиду формат обучения: разные новомодные кроссфиты + девушки + дети + конный спорт + английский язык. Ну теперь я понимаю что за «спаринг» там может быть между парнем и девушкой, но не понимаю почему ты считаешь его таким важным. У каждого свои цели. Удачи. Peace!
Как же все поменялось за столько лет. Не осталось братьев. Закрыли залы. Взяли какого-то ванильного тренера и добавили кросс-фит в расписание. Может еще и девушек теперь тренируют на Дмитриевской? Тогда это полный провал.
Или ты жизнь не понял. П.С. Кто такой «Николаевич» я не знаю. Может ты ходил в «лже Гермес»? Таких много в Киеве.
Я 4 года ходил и ни разу не был на спаринге. Не знаю о чем ты...
Похоже «Гермес» ещё не советовали. Это самооборона + жёсткая подготовка (физическая и психологическая). На спаринги можно не ходить, так как они проводятся отдельно.
Сейчас все очень сложно с оффшорами.
Корпоративне налоги может и идут в ноль, но при получении дивидендов в Украине заплатишь свои налоги.
Согласен.
Как такое могло получиться?