«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
getNthOrEqualIdFromThisOnTheRightByStatusChannelbotIdAndMessageSource Аноним 2019/01/22 13:05:06  №1332576 1
Screenshot43.png (25, 788x409)
409x788
Кажется у меня проблема.
Я не знаю как коротко называть методы.
Это уже совсем пиздец какой-то блять.
Что делать? Как бы вы назвали этот метод?

Просто убрать ByStatusChannelbotIdAndMessageSource нельзя, ибо там и по другим критериям методы есть.
Аноним 2019/01/22 13:16:46  №1332589 2
>>1332576
Впринципе тебе было бы удобнее билдер критериев иметь, чем городить эти обертки с детальным описанием в названии.
С билдером мог бы сделать например
$builder->nthOrEqualFrom(...params)->right()->byStatus(status)->byMessageSource(source)->get();
и это более переиспользуемый и гибкий вариант. Правда я понятия не имею насколько это реально у тебя по коду реализовать.
Ответы: >>1332594 >>1332683
Аноним 2019/01/22 13:20:49  №1332594 3
>>1332589
Как такое сделать? Как паттерн называется?
Ответы: >>1332606
Аноним 2019/01/22 13:29:24  №1332606 4
>>1332594
Билдер и называется, только придется фантазию проявить. Примеры и объяснения по учебнику не для таких ситуаций. Наверняка видел аналоги в виде QueryBuilder всяких. Суть та же.
Ответы: >>1332628
Аноним 2019/01/22 13:43:56  №1332628 5
>>1332606
Вообще я знаю паттерн, (но забыл название, лол), который позволяет создавать цепочки вызовов методов типа как ты выше написал. Если вкратце, суть в том, чтобы возвращать $this везде.

Но вообще это уже какая-то ORM нахуй получается, в рот я ебал еще и орм на коленке писать тут, совсем говноедство какое-то будет, никто блядь не поймет потом мой код
Ответы: >>1332631 >>1332635
Аноним 2019/01/22 13:50:16  №1332635 6
>>1332628
Ну вот в твоей ситуации это как бы билдер критерии для метода getNthOrEqualFromThis. Вариантов много, вон аж 6 параметров, один из которых массив. Делаешь class ShittyBuilder {
private $id;
private $otherParam;
private $otherOtherParam;
// other params

public function byId($id) {$this->id = $id; return $this;}
// other methods
public function fetch() {
return $someInstance->getNthOrEqual($allYourParams);
}
}

Вот тебе и билдер конкретно для того страшного метода с кучей параметров. Как ты понимаешь это на коленке и сделать можно лучше во много раз, просто как пример что тут нет ничего сложного. Полноценная орм и прочее, кстати, тоже пригодились бы. Раз у тебя ее нет можешь взять да доктрину подтянуть, там много чего есть.
Ответы: >>1332642
Аноним 2019/01/22 13:56:59  №1332642 7
>>1332635
Тогда придется на тонны других методов тоже отдельные классы писать? Это же просто ебанутся как долго.

Насчет орм и доктрины - да. В следующий раз, пожалуй и буду их юзать. Сейчас уже нет смысла тонны кода переписывать на нее.
Ответы: >>1332643
Аноним 2019/01/22 13:59:34  №1332643 8
>>1332642
Ну как посмотреть. Вот у тебя есть метод getNthOrEqualFromThis. Первая же обертка над ним получилась с длиннющим именем. А таких оберток, судя по количеству параметров, может быть до ебаной жопы. Помоему лучше уж один раз сделать даже самый глупенький билдер и дергать через него, чем делать 100500 длиннющих методов вместо этого каждый раз. Сам же сказал, что есть и другие критерии к нему, значит проблема не в одном только том конкретном методе.
Ответы: >>1332647 >>1332681
Аноним 2019/01/22 14:03:32  №1332647 9
>>1332643
Но тогда это будет практически эквивалентно прямым запросам в БД, только через обертку.
Инкапсуляция, мам...

Нужно создать несколько методов с выборками по определенным критериям, а не просто разрешить ебать таблицу в рот и жопу как хочешь.
Ответы: >>1332651 >>1332653
Аноним 2019/01/22 14:10:52  №1332651 10
>>1332647
А через эти методы типа только в писечку ебешь, но никак не в рот и жопу как содомит какой-то? Чтобы полноценно выбрать решение надо разобраться в причинах, которые привели к той обертке, а не только на метод имени Льва Толстого посмотреть.
Ответы: >>1332676
Аноним 2019/01/22 14:11:52  №1332653 11
Аноним 2019/01/22 14:38:27  №1332676 12
>>1332651
>А через эти методы типа только в писечку ебешь, но никак не в рот и жопу
Ну вообще да, в том и смысл!
Ответы: >>1332677
Аноним 2019/01/22 14:43:01  №1332677 13
>>1332676
Я как-то не вижу этого. Обертка с именем на целый фанфик по сути прячет всего 1.5 реальных параметра, притом сама целых 5 принимает. И реально спрятанный параметр всего лишь бул. Судя по всему есть еще и вторая такая, где _is_less тру. Шо так ебать можно, шо эдак.