Aliaksandr
так и get() нет - зато есть куча методов от всяких диспатчеров, билдеров, коллекшенов
Aliaksandr
может чего еще подкрутить надо
Pathologic
потому что get туда передается через магический метод
Aliaksandr
Pathologic
то есть ты вызываешь какой-то метод, callStatic срабатывает, потому что метода не существует в классе, а там ты его куда-то пробрасываешь
Aliaksandr
так я это понимаю, но чем мне шторм поможет, если он нифига не видит самых рабочих методов модели )
Pathologic
я же говорю, с отладчиком ты бы увидел как это происходит и куда пробрасывается
Pathologic
он физически не может их увидеть
Pathologic
это только во время выполнения кода возможно
Pathologic
сделай new SiteContent
Pathologic
тогда увидишь больше
Aliaksandr
а если брать чисто функционал сайта - так тут и совсем некуда пробрасываться ))
Aliaksandr
Aliaksandr
в общем я пока в рядах неопределившихся ))
Volodymyr
В evolutioncms/example-packege есть пример для ide-helper
Pathologic
так с таким функционалом тебе и контроллеры эти не нужны
Aliaksandr
ну так а с каким функционалом они нужны - когда это 95% текущих сайтов )
Aliaksandr
в контроллерах этих просто удобнее все в одном месте разрулить да не париться потом в шаблоне с кучей мелочевки
Pathologic
Pathologic
вот твой SiteContent::find
Pathologic
ну так а с каким функционалом они нужны - когда это 95% текущих сайтов )
они там нужны где пользователи с фронта че-то делают
Pathologic
тогда это хорошая тема
Aliaksandr
не, с подготовкой данных в одном месте в этом контроллере мне тема нравится. А насчет find - опять же ничего не ясно, это ж не конечная точка этот __callStatic - где-то же должен быть в итоге и сам метод find
Aliaksandr
чтоб понять, что в него передать и что от него ждать
Pathologic
ну так я могу дальше пройти и увидеть
Pathologic
а так это модель, ты же можешь открыть ее и увидишь
Pathologic
вкладка structure
Aliaksandr
так нет его там )
Pathologic
там нет
Pathologic
но опять же магией переправит в Builder
Pathologic
😜
Aliaksandr
Aliaksandr
оно прилетает аж из билдера - но как его через шторм найти хз ))
Aliaksandr
и в этом бля 70% ларавеля ))
Pathologic
если не знать, что модели в билдер переправляют, то только отладчиком и найдешь
Pathologic
а так в документации про это написано, вроде бы
Aliaksandr
ну так вот к тому и приходим что типа "шторм сам все знает, а ты только жми контрол да мышкой тыркай и будешь чудом улетать куда надо" очень часто просто рекламный треп )
Pathologic
each Eloquent model serves as a query builder
Aliaksandr
шторму пох )
Pathologic
ну, в ево это прекрасно работает ((:
Aliaksandr
если б они хотя бы экстендили этот билдер - тогда было бы понятно, но по факту в самом классе даже намека нет, что это билдер )
Pathologic
public function __call($method, $parameters) { if (in_array($method, ['increment', 'decrement'])) { return $this->$method(...$parameters); } if ($resolver = (static::$relationResolvers[get_class($this)][$method] ?? null)) { return $resolver($this); } return $this->forwardCallTo($this->newQuery(), $method, $parameters); }
Pathologic
newQuery еще через три пизды вернет тебе билдер
Aliaksandr
заебись ))
Aliaksandr
это если идти от обратного и знать, что ты ищешь билдер - то куда ни шло. а если просто искать, откуда растут ноги у метода ::find(), так эти ноги и переломаешь
Pathologic
отладчик бы тебя провел по всем этим методам, попробуй ((:
Pathologic
с опенсервером работало, я пробовал
Aliaksandr
т.е. получается такая херовертина, что он сначала ищет ::find, видит, что его нет, через __callStatic направляет его на ->find, видит, что и этой хероборы нет, и через __call направляет лесом-полем через newQuery к Builder->find()
Aliaksandr
заебись метОда ))
Pathologic
да
Pathologic
нужно только будет почитать что такое (new static)
Pathologic
я не знаю, как это работает
Aliaksandr
вызов того же класса )
Aliaksandr
который вроде вызывает именно этот, а не родителя
Pathologic
а почему в скобках
Aliaksandr
я когда то читал про new static vs new self но уже забыл что к чему
Pathologic
я сегодня читал про Reflection и наткнулся на "метод не документирован" ((:
Aliaksandr
ну а как ты к нему метод припишешь - в скобках класс, за скобками метод
Aliaksandr
(new static)::find() это типа короткой записи $obj = new static; $obj::find(); я так понимаю
Pathologic
ну да
Pathologic
похоже на то
Pathologic
вообще это типа портит производительность
Aliaksandr
надо освежить в памяти new static vs new self, ночь субботы - отличный повод ))
Pathologic
бля
Pathologic
а я думал воскресенье сегодня
Pathologic
ну то есть понедельник будет, когда проснусь
Pathologic
надо освежить в памяти new static vs new self, ночь субботы - отличный повод ))
/** * Begin querying the model. * * @return \Illuminate\Database\Eloquent\Builder */ public static function query() { return (new static)->newQuery(); }
Pathologic
так-то многие в это и не вникают
Pathologic
есть же типа программисты ларавель, которые не могут в пхп
Pathologic
ну как программисты jquery, не знающие js ((:
Aliaksandr
в общем самое простое объяснение это как я и говорил self всегда указывает на тот класс, в котором оно объявлено, а static — на класс в котором он по факту будет вызван с учетом всех наследований
Pathologic
такие вещи не сразу доходят
Pathologic
как с тем же контейнером
Aliaksandr
такое чувство, что это просто новомодная замена $this->newQuery(); ))
Aliaksandr
просто наверно после прохождения через кучу фасадов, синглтонов и магических методов $this перестает работать и надо его заново обнаруживать через new static
Pathologic
ну это опять же надо посмотреть отладчиком
Pathologic
он показывает this
Aliaksandr
Так тебе удалось найти момент, когда оно прокидывается в Builder этим отладчиком?
Pathologic
щас найду
Aliaksandr