@prophp7

Страница 846 из 1387
Sergey
20.12.2017
11:11:47
заодно в голове приберешься

можешь рандом юзать

вместо конкретных значений

ну короч, за тебя никто работу деать не будет)

Google
Влад
20.12.2017
11:15:01
Да ну это понятно) Я бы тоже не стал за кого-то чужую работу делать)

https://tproger.ru/problems/design-an-algorithm-to-find-all-pairs-of-integers-within-an-array-which-sum-to-a-specified-value/

Такое подойдёт для моей задачи?

Sergey
20.12.2017
11:28:34
@Enleur class Site { public $name; public $url; } $site = Site{"name": "Reddit", "url": "https://reddit.com/"};

как тебе такая наркомания?)

MorrisonLevi хочет запилить

Dmitry
20.12.2017
12:12:50
в пхп?

Андрэ
20.12.2017
12:20:07
Судя по $site, да

Но зачем. Экономить на конструкторах с инициализацией? надо ж както указать будет поля, которые нельзя прокинуть так

Sergey
20.12.2017
12:23:59
MorrisonLevi хочет запилить
неплохо, а дай линк

Dmitry
20.12.2017
12:24:08
вот такое было https://wiki.php.net/rfc/automatic_property_initialization, но задеклайнили

Bohdan
20.12.2017
12:28:44
таки наркомания пхп это вам не жс

вот такое было https://wiki.php.net/rfc/automatic_property_initialization, но задеклайнили
это еще относительно интересно, но синтаксис не совсем логичный имхо было бы круче что-то вида $x » $this или вроде этого с отдельным оператором на это дело

Google
Sergey
20.12.2017
12:31:02
неплохо, а дай линк
он это чисто на рэддите пока опубликовал

Dmitry
20.12.2017
12:31:37
кривой синтаксис все-равно

Bohdan
20.12.2017
12:32:07
ты про мой вариант? или то, что Сергей писал выше?

Dmitry
20.12.2017
12:32:09
скорее уж тайпкаст разрешить во все классы

(Site)$array типа

я про {}

Bohdan
20.12.2017
12:35:03
да, это криво еще и со строчными ключами - выглядит отстойно

Maksim
20.12.2017
12:53:07
а смысл в чём? чем это лучше обычного/именованного конструктора?

тем, что самому присваивать не надо?)

Maksim
20.12.2017
12:54:10
ну такое себе

Sergey
20.12.2017
12:54:25
это аля дата классы в котлине, только php-way

я вот думаю в январе таки заняться исследованием php internals и повоять какого сахара

аля

public function __construct( private EntityManager $em ) {}

ибо дико не хватает после всяких там тайпскриптов или котлинов

Bohdan
20.12.2017
12:56:03
я понимаю, что это "аля" но тем не менее не оч

непонятно, что будет происходить

или именно как дата классы эти (как раз смотрю)?

Google
Sergey
20.12.2017
12:56:50
непонятно, что будет происходить
в смысле непонятно? это равносильно следующему: private $em; public function __construct(EntityManager $em) { $this->em = $em; }

Bohdan
20.12.2017
12:57:06
чтобы и сразу объявить сущность, и привязать ее...

Sergey
20.12.2017
12:57:31
типа того, сильно упрощает код на самом деле, особенно учитывая что у тебя большая часть классов это содержит

по сути все сервисы

Bohdan
20.12.2017
12:58:19
да, упрощает

мне не нравится оно семантически чисто с точки зрения формулировок получается, что метод __construct (который, как ожидается, должен отвечать за конструирование класса) определяет его содержимое

тут как вариант сделать дефолт конструктор который берет все приватные поля в том порядке, в котором описаны

Bohdan
20.12.2017
12:59:46
и принимает в себя

Sergey
20.12.2017
12:59:48
с точки зрения клиентского кода сигнатура не меняется

порядок объявления полей не должен влиять на порядок аргументов

Bohdan
20.12.2017
13:01:32
код для клиента - тоже аргумент насчет неявности - тут уже надо держать баланс

Sergey
20.12.2017
13:01:45
либо я не понял что ты имеешь ввиду

Bohdan
20.12.2017
13:01:57
ты понял правильно

Sergey
20.12.2017
13:02:14
я предлагаю вместо private $em и $this->em = $em просто заюзать в аргументе ключевое слово public/private/protected;

Bohdan
20.12.2017
13:02:45
получится динамическое объявление на стероидах

Sergey
20.12.2017
13:03:10
private $authData; public function __construct( private SomeService $service, $someToken, $someOtherThing ) { $this->authData = sha1($someToken.someOtherThing); }

Bohdan
20.12.2017
13:03:13
не могу сказать, что это плохо

Sergey
20.12.2017
13:04:27
а то что предлагает Морисон Леви, это упростит работу со структурами данных и позволит их делать больше и более структурированными, менее чувствительными к изменениям...

Google
Dmitry
20.12.2017
13:08:36
ничего не упростит, кто делал DTO с конструктором - тот и будет делать, а кто не делал - и не будет

Dmitry
20.12.2017
13:09:32
ну да

Sergey
20.12.2017
13:09:39
а ты я смотрю консерватор

я лично рассмотрю хотя бы такой вариант)

Dmitry
20.12.2017
13:09:51
нет, я в детсвте магии наелся

Sergey
20.12.2017
13:09:59
где ты тут магию увидел?

или что-то неявное

с такой логикой оператор присвоения и мутация стэйта уже должна становиться для тебя магией

Bohdan
20.12.2017
13:10:28
мне в версии Леви не нравятся строчные ключи

Admin
ERROR: S client not available

Bohdan
20.12.2017
13:10:31
это вроде и логично

Dmitry
20.12.2017
13:10:34
ну сахар, ок

сахара я еще больше наелся, 7 лет на перле ;)

Sergey
20.12.2017
13:11:01
я тоже понимаю что мне IDE все за меня сделает, и местами во всех вызовах аргументы поменяет и поле добавит

но блин, удобненько ж

мне в версии Леви не нравятся строчные ключи
да, по синтаксису еще есть вопросы

Bohdan
20.12.2017
13:11:29
но лично у меня строки - это либо строки, либо ключи для массивов использовать их еще где-то не люблю как минимум - отсутствие автокомплита нормального

Maksim
20.12.2017
13:12:06
я дно и пишу дтошки с конструкторами, приватными свойствами и геттерами и мне хорошо :( в задницу магию, публичные свойства и т.д.)

Google
Sergey
20.12.2017
13:12:07
в этом конкретном случае все будет работать

Роман
20.12.2017
13:12:25
https://regex101.com/r/qbwBq9/1/ как взять два id если одно в кавичках , а другое без?

Bohdan
20.12.2017
13:12:46
это уже становится точка разветвления то есть тут у нас строка это строка, а тут у нас строка определяет поле, которое хотим заполнить, да еще и идешка предлагает эти самые поля

Dmitry
20.12.2017
13:12:49
лучше уж именованные аргументы ввели, и то больше толку ;)

Maksim
20.12.2017
13:12:49
тебе хорошо но смайлик ты грустный поставил
грустный смайлик в контексте не очень понятного профита от сахара выше)

Maksim
20.12.2017
13:13:06
Dmitry
20.12.2017
13:13:09
но их зарезали, вроде...

Sergey
20.12.2017
13:13:22
лучше уж именованные аргументы ввели, и то больше толку ;)
нет, я пожалуй уже не очень хочу их видеть

Bohdan
20.12.2017
13:13:30
мне они не нравятся в питоне только из-за отсутствия автокомплита

Sergey
20.12.2017
13:13:34
они будут подталкивать людей к тому что бы увеличивать количество аргументов

Bohdan
20.12.2017
13:13:37
адекватного, по крайней мере

Sergey
20.12.2017
13:13:49
Bohdan
20.12.2017
13:13:51
(да, я ide-обезьянка, без автокомплита жить не хочу)

Dmitry
20.12.2017
13:13:59
т.е. массив в инициализацию паблик свойств - норм, а массив в конструктор подать - не оч? ;)

Bohdan
20.12.2017
13:14:26
у меня в pycharm с этим все было ок)
я тоже пичарм пользую, но что-то мне в этом не нраавилось

Sergey
20.12.2017
13:14:48
т.е. массив в инициализацию паблик свойств - норм, а массив в конструктор подать - не оч? ;)
не очень если тебе придется потом этот массив пропихивать в свойства. Ну то есть с синтаксисом который Леви предлагает ты не массив проталкиваешь, ты должен явно прописать каждео свойство.

никакой магии и все явно

и все хорошо поддается статическому анализу

а конструктор который массивчик принимает - прощай информация о типах

Dmitry
20.12.2017
13:15:23
тогда вообще от конструктора отличия не вижу

Страница 846 из 1387