Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> [Klasa][PHP7] Cache
KsaR
post 8.06.2016, 17:50:00
Post #1





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


Źródło:
https://github.com/KsaR99/php-cache

Plik: class.Cache.php, zawiera klasę.
Plik: cache.php, to przykładowe zastosowanie.

Klas cache są miliony jednak chciałem stworzyć swoją własną, prostą. biggrin.gif

Do oceny:
  • Użyteczność
  • Co można poprawić żeby sobie/innym życia nie skomplikować
  • Jakość kodu (ciągle uczę się nią polepszać)


Zastanawiam się nad metodą do kasacji cache,
Jednak cache zazwyczaj się nie kasuje a podmienia.
Warto dodać? Jeśli tak to prosił bym też o przykład - po co.

Wszelkie uwagi mile widziane. tongue.gif

Ten post edytował KsaR 8.06.2016, 17:51:54


--------------------
Go to the top of the page
+Quote Post
kapslokk
post 8.06.2016, 18:19:32
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Przydała by się możliwość cachowania innych typów danych. ;]
Go to the top of the page
+Quote Post
Pyton_000
post 8.06.2016, 18:33:23
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Kompresja gz. Do wywalenia. Jedynie spowalnia całość.

Go to the top of the page
+Quote Post
mrc
post 8.06.2016, 18:53:58
Post #4





Grupa: Zarejestrowani
Postów: 160
Pomógł: 27
Dołączył: 22.09.2008
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


Więcej dokumentacji, niż właściwego kodu biggrin.gif


--------------------
Go to the top of the page
+Quote Post
KsaR
post 8.06.2016, 19:44:54
Post #5





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


Cytat(kapslokk @ 8.06.2016, 19:19:32 ) *
Przydała by się możliwość cachowania innych typów danych. ;]

Postaram się dodać. tongue.gif

Cytat(Pyton_000 @ 8.06.2016, 19:33:23 ) *
Kompresja gz. Do wywalenia. Jedynie spowalnia całość.

Domyślnie jest wyłączona więc nie powinno spowalniać. (Chyba że w ms).

Cytat(mrc @ 8.06.2016, 19:53:58 ) *
Więcej dokumentacji, niż właściwego kodu biggrin.gif

Przecież jest napisane "... prostą", ważne że robi swoje. tongue.gif


--------------------
Go to the top of the page
+Quote Post
mrc
post 8.06.2016, 19:54:42
Post #6





Grupa: Zarejestrowani
Postów: 160
Pomógł: 27
Dołączył: 22.09.2008
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


Co do phpdoc dla metod: całkiem niepotrzebny jest dla parametrów, dla których podajesz typ w kodzie. Zaciemnia to kod, dorzuca dodatkowy szum informacyjny, może prowadzić do problemów przy refactoringu - przy zmianie zachowania funkcji możesz zapomnieć o zmianie komentarza, który później będzie wprowadzał w błąd.


-- Edit --

"if you want use compression mode"

vs

"if you want to use compression mode".

-- Edit --

Do tego throw Exception() przy użyciu namespace może wyrzucać błąd nieznalezienia klasy. Rzucaj \Exception albo bardziej oczywiste wyjątki jak \InvalidArgumentException.

Ten post edytował mrc 8.06.2016, 19:58:54


--------------------
Go to the top of the page
+Quote Post
com
post 8.06.2016, 23:22:44
Post #7





Grupa: Zarejestrowani
Postów: 3 032
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Dobre IDE podpowie, że typ się zmienił, a Storm używa phpDoca do podpowiadania, tylko mnie rażą te nazwy typów UpperCasem.

No ale skoro może spowalniać to poco wgl ja trzymać jako opcje?

Cytat
Do tego throw Exception() przy użyciu namespace może wyrzucać błąd nieznalezienia klasy.


Nawet nie może tylko wyrzuci smile.gif

komentarze to nie
  1. /**
  2. *
  3. *
  4. */

tylko
  1. /**
  2.  *
  3.  *
  4.  */


No i czemu taka archaiczna konwencja nazewnictwa?
Gdzie PSR

Nazywaj jakoś sensownie te commity wink.gif

Z ścieżki i innych zrobiłbym VO, bo czemu klasa cache ma za to odpowiadać, czy one są poprawne, jak to nie jej rola.

I poco ustawiać wartości domyślne, parametrom którym wymuszasz ich zmianę?

Zaraz, ja muszę stworzyć sobie plik żeby do niego pisać?

poza tym else to zło, naprawdę nie można było

  1. if (!isset($path) || !file_exists($path)) {
  2. throw new \Exception('bla bla');
  3. }
  4.  
  5. $this->path = $path;


Btw treść commita to nie komentarz, bo wpisujesz tam to co ma znaczenie i utrudniasz sobie i innym czytanie commitów wink.gif

No i nazywaj te parametry tak żeby mówiły co robią, a nie np $compress - co sugeruje że coś jest skompresowane a nie wskazuje na flage itp

Skoro używasz dobrodziejstw php 7 to poco sprawdzać isset($compress) && $compress questionmark.gif bool to zawsze bool

zrób sobie jakaś metodę do budowania właściwej ścieżki, bo tak ciężko to testować/refaktorwać potem

Zrobiłem Ci pull requesta, bo za dużo tego było wink.gif

Ten post edytował com 8.06.2016, 20:58:01
Go to the top of the page
+Quote Post
Pyton_000
post 9.06.2016, 07:13:13
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Skoro mamy już $extension i $isCompressed to warto by było nadać im jakiś default. Compressed na false, a ext. nie wiem może ".dat"
Go to the top of the page
+Quote Post
com
post 9.06.2016, 09:09:53
Post #9





Grupa: Zarejestrowani
Postów: 3 032
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Ok uwzględnię, zastanawiałem się nad tym smile.gif
Go to the top of the page
+Quote Post
KsaR
post 9.06.2016, 10:09:22
Post #10





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


Cytat(com @ 9.06.2016, 00:22:44 ) *
(...), tylko mnie rażą te nazwy typów UpperCasem.

No ale skoro może spowalniać to poco wgl ja trzymać jako opcje?

(...)No i czemu taka archaiczna konwencja nazewnictwa?
Gdzie PSR

(...)Zaraz, ja muszę stworzyć sobie plik żeby do niego pisać?

(...)No i nazywaj te parametry tak żeby mówiły co robią, a nie np $compress - co sugeruje że coś jest skompresowane a nie wskazuje na flage itp

(...)Zrobiłem Ci pull requesta, bo za dużo tego było wink.gif

Dzięki, wiele zmian dodałem w ostatnich 2 commitach.
Nie znalazłem nigdzie w PSR czy używać małymi czy dużymi te nazwy typów (było tylko o parametrach).
Jeśli ktoś poda konkretny link do PSR gdzie pisze że trzeba małymi to poprawie,
Póki co tak wg. mnie lepiej (typy z dużych, parametry z małych).

Co do opcji, jak pisałem domyślnie jest wyłączone.
Takie spowolnienie to jedynie użycie ternary operator - czyli żadne.
A tak się przydaje gzip do większych plików.

Co do tworzenia pliku -
metoda set() tworzy/aktualizuje, validate jedynie sprawdza czy plik istnieję i jest aktualny...
Więc nie rozumiem pytania.

Zmieniłem z $compress na $useGZIP ($isCompress mi nie odpowiadało, "jestKompresja" vs "użyjGZIP")....

JW. Jednak przeniosłem twoją metodę oraz pomysł na statyczne zmienne.
+ W poprzednim commicie zgodnie z komentarzem mrc skasowalem z komentarzy te typy które są zadeklarowane w metodzie - ty je znów dodałeś.
___________
Co do ".dat", zostaje przy ".txt" - jako ze to pliki tekstowe.
Jednak zmienilem ze rozszerzenie bedzie ".gz" dla plików skompresowanych niezależnie od tego co się poda w konstruktorze.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 9.06.2016, 10:19:35
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


http://www.php-fig.org/psr/psr-2/#2-5-keyw...true-false-null
Go to the top of the page
+Quote Post
KsaR
post 9.06.2016, 10:26:48
Post #12





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 9.06.2016, 11:19:35 ) *

True false null...
Chodzi tu o dosłowne zastosowanie typu.

$var = null;

Itp.
Nie jest napisane o PHP7 oraz wymuszonych typach metod/funkcji...
A w końcu w php nie ma czegoś takiego jak:
$var = string;
$var = int;...

Ten post edytował KsaR 9.06.2016, 10:27:32


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 9.06.2016, 10:27:25
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


tak ale string, int, bool to też keywordsy więc do tego bym podciągnął
Go to the top of the page
+Quote Post
kapslokk
post 9.06.2016, 10:34:48
Post #14





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Poza tym upper case chyba zawsze był zarezerwowany dla stałych tongue.gif
Go to the top of the page
+Quote Post
com
post 9.06.2016, 10:51:31
Post #15





Grupa: Zarejestrowani
Postów: 3 032
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


https://github.com/php-fig/fig-standards/bl...-style-guide.md

Php7 jest jeszcze nie zatwierdzone ale jest ;)

To co zmieniłeś nie ma sensu, bo parametr musisz podać wiec poco nam ??
Typy maja być, bo phpdoc nie jest jeszcze do php7 przygotowany i np Storm interpretuje potem twój komentarz jako klasę. Dlatego je dodałem, jak nie dajesz wgl komentarzy to wtedy można tak pisać, ale nwm czy to ma sens.

nie było $isCompress tylko $isCompressed - jest skompresowany wink.gif

Cytat
Jednak zmienilem ze rozszerzenie bedzie ".gz" dla plików skompresowanych niezależnie od tego co się poda w konstruktorze.


Może to być dla kogoś wielkim zaskoczeniem smile.gif

Ten post edytował com 9.06.2016, 10:47:59
Go to the top of the page
+Quote Post
nospor
post 9.06.2016, 10:51:57
Post #16





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Mnie tez porazily te STRINGi...

  1. if ($cache->valid('number', 30)) { // cache has up to 30s ?
  2. echo $cache->get('number'); // if yes, display.
  3. }

Osobiscie preferuje gdy metoda get sama sprawdza czy jest valid czy nie i gdy nie jest valid to albo zwraca null albo rzuca wyjatek

  1. $_SERVER['REQUEST_TIME']-filemtime($path)

Chyba bardziej powinienes uzywac tim() a nie czasu z $_SERVER


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
com
post 9.06.2016, 10:58:39
Post #17





Grupa: Zarejestrowani
Postów: 3 032
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


nospor

Tylko wtedy mamy 2 odpowiedzialności wink.gif

time() biggrin.gif
Go to the top of the page
+Quote Post
nospor
post 9.06.2016, 11:01:14
Post #18





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




tak, tak, time, szybko pisze bo jestem sledzony wink.gif

I co z tego ze dwie? Nie popadajmy w skrajnosci. Osobiscie nie widze sprawdzania za kazdym razem czy jest valid czy nie. A co jak zapomne sprawdzic i uzyje tylko get?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
com
post 9.06.2016, 11:04:47
Post #19





Grupa: Zarejestrowani
Postów: 3 032
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


A i chodziło mi o konwencje nazywania plików wink.gif

Owszem jest to problem, no to najwyżej dostaniesz nie spójne dane smile.gif

Owszem inaczej bym to rozwiązał, żeby sprawdzał tylko raz a nie za każdym razem, ale niekoniecznie w get smile.gif
Go to the top of the page
+Quote Post
nospor
post 9.06.2016, 11:05:25
Post #20





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
Owszem jest to problem, no to najwyżej dostaniesz nie spójne dane smile.gif
i wlasnie temu get() powinno odwalac cala robote a nie ja mam sie jeszcze martwic. Nie lubie gdy jakies durne terorie utrudniaja mi zycie wink.gif


Ksar:
raz piszesz self::
raz static::

zdecyduj sie na jedno i uzywaj a nie mieszasz bo oczaplasu idzie dostac


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 00:22