Size: a a a

2021 February 26

AS

Alex Sin in Laravel UA
Jeen
Честно, лень вылазить с дивана и искать где не возвращается
дело ведь не втом, что где-то в каких то местах зис не вертается, дело в том что где-то он все-таки вертается))
источник

J

Jeen in Laravel UA
Ну и с таким подходом, не будет инкапсуляции. Все методы будут в паблике по факту
источник

AS

Alex Sin in Laravel UA
Кстати, а как сделать чейнинг в пхп без return $this ?
источник

AS

Alex Sin in Laravel UA
Jeen
Ну и с таким подходом, не будет инкапсуляции. Все методы будут в паблике по факту
Отлично подмечено
источник

J

Jeen in Laravel UA
источник

J

Jeen in Laravel UA
Билдер элоквента, пролистал 5 методов, ни в одном билдер не возвращается
источник

J

Jeen in Laravel UA
То булеан, то войд, то массив, то коллекция
источник

AS

Alex Sin in Laravel UA
Jeen
То булеан, то войд, то массив, то коллекция
ну конечно там не все методы зис вертают, есть и те которые итоговые результаты выдают, куда ж без этого
источник

AS

Alex Sin in Laravel UA
уже нашли 2 проблемы
источник

AS

Alex Sin in Laravel UA
1) нет инкапсуляции
источник

AS

Alex Sin in Laravel UA
2) нельзя вернуть результат, в том случае если метод вертающий результат - закрытый
источник

AS

Alex Sin in Laravel UA
Alex Sin
2) нельзя вернуть результат, в том случае если метод вертающий результат - закрытый
этот момент легко пофиксить, просто в кале трейта чекаем, если результат $method() будет не зис, то вертать надо не зис, а данные
источник

AS

Alex Sin in Laravel UA
источник

AS

Alex Sin in Laravel UA
а не стоп
источник

AS

Alex Sin in Laravel UA
ну да, если вообще что-то вернулось, и это точно не зис, то вертаем это что-то
источник

AS

Alex Sin in Laravel UA
Alex Sin
<?php

trait Chainer {
   
   public function __call($method, $params)
   {
       $result = $this->$method($params);
       
       $somethingReturned = $result && !is_a($result, self::class);
       
       return $somethingReturned ? $result : $this;
   }
}

class Foo {
   
   use Chainer;
   
   protected function foo()
   {
       $john = 'doe';
   }
   
   protected function bar()
   {
       return 123;
   }
}

echo (new Foo)->foo()->bar();
по этой логике
источник

AS

Alex Sin in Laravel UA
сейчас отредактирую
источник

AS

Alex Sin in Laravel UA
Переслано от Alex Sin
<?php

trait Chainer {
   
   public function __call($method, $params)
   {
       $result = $this->$method($params);
       
       $somethingReturned = $result && !is_a($result, self::class);
       
       return $somethingReturned ? $result : $this;
   }
}

class Foo {
   
   use Chainer;
   
   protected function foo()
   {
       $john = 'doe';
   }
   
   protected function bar()
   {
       return 123;
   }
}

echo (new Foo)->foo()->bar();
источник

AS

Alex Sin in Laravel UA
Alex Sin
2) нельзя вернуть результат, в том случае если метод вертающий результат - закрытый
done, остался вопрос с инкапсуляцией, проблему подсветки пока хз как разрешить
источник

AS

Alex Sin in Laravel UA
А с другой стороны, если в этом классе юзается трейт чейнер, и в методе классе я вызываю приватный метод этого класса, который в свою очередь вертает данные или зис - трейт никак не мешает этому
источник