Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Frameworki _ [Laravel] Cache

Napisany przez: john_doe 4.06.2018, 13:27:34

Hej,

znalazłem, jak narazie jedyny, artykuł na temat "keszowania" ( w rozumieniu, że nie zwykły Cache::remember w kontrolerze ) , który niby ma odświeżać cache po modyfikacji modelu.

https://laravel-news.com/laravel-model-caching

Napisałem sobie generyczne CrudRepository np z taką metodą

  1. public function getBy(string $fieldName, $fieldValue, http://www.php.net/array $columns = ['*'], $orderBy = null): Collection
  2. {
  3. $stmt = $this->model->where($fieldName, $fieldValue);
  4.  
  5. if (!http://www.php.net/empty($orderBy))
  6. {
  7. $stmt->orderBy($orderBy);
  8. }
  9.  
  10. return $stmt->get($columns);
  11. }


Chciałbym dołożyć coś w stylu jak w linku aby poprawić wydajność aplikacji oraz aby było to uniwersalne i nie brało z "keszu" jeśli model jest nowszy. Konfiguracja drivera standardowa = file.
Czy możecie podpowiedzieć jak utworzyć np. jakiś bazowy model, który rozszerzałby Eloquent/Model?

Napisany przez: Pilsener 7.06.2018, 07:32:43

Implementacja nowych funkcjonalności to był może i dobry powód by rozszerzać klasę w PHP, ale z 10 lat temu albo więcej (kiedy dziedziczenie i singleton to były jedyne słuszne wzorce, hehe)
Dzisiaj takie rzeczy załatwia się poprzez delegację, czyli dostarczenie jakiejś tam funkcjonalności w miejsce, gdzie jest ona potrzebna.
Masz już repository, więc wg mnie dobrze jest przygotować sobie serwis "cache" i po prostu użyć go w tym repository.
Z tego co pamiętam Laravel daje łatwą możliwość wstrzyknięcia serwisu przez konstruktor i dysponuje także kontenerem serwisów, więc nie powinno być problemu.
Dodatkowo prawie zawsze istnieje potrzeba keszowania nie tylko zapytań do bazy i wtedy wszystko mamy załatwione jednym serwisem.

Napisany przez: kleus 23.08.2018, 10:26:45

Tak jak kolega Pilsener wspomnial najelpiej przez class contructor dac cache i tak go uzywac... jezli juz naprawde chcesz robic cache bazy... co jest dziwne.
Jestem pewien ze odczyc z cache i bazy trwa dokladnie tak samo dlugo - a raczej jest tak samo szybki... WIec po co?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)