[Klasa][PHP7] Cache |
[Klasa][PHP7] Cache |
9.06.2016, 11:24:00
Post
#21
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
Co do lowercase keyword, argument z
https://github.com/php-fig/fig-standards/bl...-style-guide.md Mnie przekonał i zmieniłem. Co do time()... zanim dodałem na GH tak miałem jednak pomyślałem że rzadko kiedy skrypt się sekundę wykonuję lub więcej ale się zdarza więc poprawiłem. Co do self va static, przeoczenie i poprawiłem na self - wg. Mnie lepiej żeby z glownej klasy pobieralo; Co do valid w get. Coś zaraz poprawie. @edit - poprawiłem. Ten post edytował KsaR 9.06.2016, 11:37:49 -------------------- |
|
|
9.06.2016, 11:57:50
Post
#22
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
nie
return false a return null -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
9.06.2016, 12:10:12
Post
#23
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
nie return false a return null Dodał byś jakieś argumenty za i przeciw? W mojej opinii: Null = 0 = zapelnienie pustego miejsca w matematyce. ( https://pl.m.wikipedia.org/wiki/0_(liczba) ) = "Cache nie zwróciło nic". False = fałsz = "cache jest niepoprawne", "nieaktualne". -------------------- |
|
|
9.06.2016, 12:17:45
Post
#24
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
funkcja set powinna zwraca true lub false w zaleznosci czy sie udalo czy nie.
W sumie w czasie wyjatkow powinna rzucac wyjatkiem gdy nie udalo null vs false jak slusznie zauwazyles false gdy jest blad. Moim zdaniem nieaktualny cache nie jest bledem a poprostu brakiem danych czyli null. Rownie dobrze moze tam jeszcze nic nie byc (null) jak i byc przeterminowane (rowniez null) parametry konstruktora string $ext, bool $useGZIP powinny miec domyslna wartosc, skoro tak czy siak potem je ustawiasz na domyslne gdy sa null. dzieki temu wywolujac konstruktor nie musze na sile wstawiac nulli -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
9.06.2016, 12:23:47
Post
#25
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
funkcja set powinna zwraca true lub false w zaleznosci czy sie udalo czy nie. W sumie w czasie wyjatkow powinna rzucac wyjatkiem gdy nie udalo null vs false jak slusznie zauwazyles false gdy jest blad. Moim zdaniem nieaktualny cache nie jest bledem a poprostu brakiem danych czyli null. Rownie dobrze moze tam jeszcze nic nie byc (null) jak i byc przeterminowane (rowniez null) parametry konstruktora string $ext, bool $useGZIP powinny miec domyslna wartosc, skoro tak czy siak potem je ustawiasz na domyslne gdy sa null. dzieki temu wywolujac konstruktor nie musze na sile wstawiac nulli Ok - zaraz poprawie na null. Co do parametrów $useGZIP ma domyslnie false. ...i w konstruktorze jest:
Czyli domyslnie useGZIP zostanie na false; A $extension bedzie na '.txt' gdy się nie poda, lub ".gz" gdy się włączy kompresję. -------------------- |
|
|
9.06.2016, 12:23:51
Post
#26
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%) |
Przepraszam, że się wtrącę Dlaczego zdecydowałeś/zdecydowaliście, aby właściwości były statyczne?
Ten post edytował Fred1485 9.06.2016, 12:24:40 -------------------- |
|
|
9.06.2016, 12:28:18
Post
#27
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Cytat Co do parametrów $useGZIP ma domyslnie false. Ja mowie o parametrach konstruktorateraz masz: public function __construct(string $path, string $ext, bool $useGZIP) przez co wymuszasz na mnie ustawienie wszystkich trzech parametrow. powinno byc: public function __construct(string $path, string $ext='.txt', bool $useGZIP=false) przez co nie musze ustawiac dwoch ostatnich jesli chce by byly domyslne Cytat Przepraszam, że się wtrącę smile.gif Dlaczego zdecydowałeś/zdecydowaliście, aby właściwości były statyczne? Sluszna uwaga.Niczemu to tutaj nie sluzy bo i tak jest private
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
9.06.2016, 12:43:59
Post
#28
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
Przepraszam, że się wtrącę Dlaczego zdecydowałeś/zdecydowaliście, aby właściwości były statyczne? Co prawda private (więc w dziedziczeniu nie będą dostępne) Ale static do tego żeby należały tylko do klasy, a do obiektu już nie... Ten post edytował KsaR 9.06.2016, 12:46:27 -------------------- |
|
|
9.06.2016, 12:49:03
Post
#29
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Cytat Ale static do tego żeby należały tylko do klasy, a do obiektu już nie... My wiemy do czego sluzy static i nie musisz nam tego wyjasniac Ok, prosta sytuacja: tworzysz dwa obiekty cache: $cache1 = new Cache('cache/', '.cache', true); $cache2 = new Cache('cacheinnasciezka/', '.cache', true); a teraz robisz save w cache1 $cache1->set() hm... ciekawe gdzie sie zapisza dane z cache1 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
9.06.2016, 13:01:51
Post
#30
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
Ok. Poprawiłem
-------------------- |
|
|
9.06.2016, 13:15:41
Post
#31
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Dodaj jakąś serializację i zrób tam tablice i inne czyli rzeczy które się w cache trzyma na codzień. Chyba nikt nie przechowuje samych stringów. Do tego nie informujesz czy się zapis udał czy nie. Zamieniłbym też kolejność na $path, $useGzip, $ext bo teraz jeśli chcę gzipować muszę podawać rozszerzenie które w dodatku nie będzie uwzględnione. Ten post edytował viking 9.06.2016, 13:37:04 -------------------- |
|
|
9.06.2016, 13:36:21
Post
#32
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
A jak chcesz zmienić ext i nie gzipować to też źle
Użyć setterów zamiast parametrów |
|
|
9.06.2016, 14:44:36
Post
#33
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Jeszcze taka pierda ale strasznie drazni oko:
throw new \Exception('Path:'."\r\n".$path."\r\n".'Doesn\'t exists.'); nawaliles tych apostrofow i cudzyslowiow bez sensu... throw new \Exception("Path:\r\n $path \r\nDoesn't exists."); prawda ze lepiej? Poza tym nowa linia to \n w cywilizowanym swiecie. zapomnij o windowsowych nawykach. Pozatym srodka zdania nie zaczyna sie od duzej litery i poza tym nowe linie tam sa totalnie bez sensu wiec: throw new \Exception("Path '$path' doesn't exist."); Jesli masz does to juz nie dajesz 's' na koncu czasownika -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
9.06.2016, 14:52:01
Post
#34
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
A jak już to raczej PHP_EOL
-------------------- |
|
|
9.06.2016, 20:12:53
Post
#35
|
|
Grupa: Zarejestrowani Postów: 3 033 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) |
Tylko że w systemie nie masz x instancji tego cache raczej, tylko jedną.
Cytat Użyć setterów zamiast parametrów Nie, parametry są lepsze, settery powinny zginąć. Obiekt cache to immutable, nie można zmieniać w czasie działania tego, bo można sobie narobić więcej problemów niż pożytku. No chyba, że zrobimy tak jak w psr7 i będziemy zwracać nowy obiekt Dlatego też zrobiłem z tego static, ale nie testowałem i co słusznie zauważył nospor, zrobił się nam singleton. I jak już to return; null tam jest nadmiarowy Na github twierdzisz ze jesteś za optymalizacja to czemu upierasz się nadal na te piramidę
KsaR Widać brak Ci trochę podstaw, bo twojego konstruktora nie dało się wywołać inaczej niż z 3 parametrami, który w dodatku powinien być zgodny z typem wiec te nawet nie miało sensu. Bo nawet wstawienie nulla wyrzuca błąd typu, jak już chcesz używać php7 to wypadało by trochę się z nim zaznajomić. Dlatego chciałem go dodać w tym pull requescie i w końcu po poście Pyton_000 je tam ustawiłem. Ten post edytował com 9.06.2016, 20:14:41 |
|
|
9.06.2016, 20:48:00
Post
#36
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
Tylko że w systemie nie masz x instancji tego cache raczej, tylko jedną. (...) I jak już to return; null tam jest nadmiarowy Na github twierdzisz ze jesteś za optymalizacja to czemu upierasz się nadal na te piramidę (...) KsaR Widać brak Ci trochę podstaw, bo twojego konstruktora nie dało się wywołać inaczej niż z 3 parametrami, który w dodatku powinien być zgodny z typem wiec te nawet nie miało sensu. Bo nawet wstawienie nulla wyrzuca błąd typu, jak już chcesz używać php7 to wypadało by trochę się z nim zaznajomić. (...) Instancje mogą być różne... $cacheMessages $cacheNews Da się oczywiście zrobić to 1 instancją ale po co ograniczać... Rozdzielenie do różnych folderów to też „optymalizacja” zwłaszcza im więcej tam ląduje (np. 1+k) Co do return; - zmienie Jeśli chodzi o te if'y. Ja wolę mieć 2 różne komunikaty (brak ścieżki, zła ścieżka) niż "brak lub zła ścieżka" Takie coś to nie sądzę żeby bylo nawet makro-optymalizacją bo się założe że z 100* if...elseif będzie szybsze od 1. trim() czy explode()... Takie coś to bardziej minifikacja. A tylko utrudni korzystnie wg. mnie (mniejsza o to - takie moje zdanie). Co do parametrów. Podstawy mam raczej. Pisałem wszystko na tablecie bez IDE typu "storm" tylko zwykłe podświetlanie składni które nawet błędów nie pokazuję, a w dodatku nie spałem. ___ W wolnym czasie postaram się dodać to serializowanie. Zastnawiam się jak to najlepiej zrobić. Ale gdy dodam to i tak będzie trzeba poprawić bo obstawiam że mam średni pomysł. -------------------- |
|
|
9.06.2016, 21:17:49
Post
#37
|
|
Grupa: Zarejestrowani Postów: 3 033 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) |
Cytat Instancje mogą być różne... $cacheMessages $cacheNews Da się oczywiście zrobić to 1 instancją ale po co ograniczać... Rozdzielenie do różnych folderów to też ?optymalizacja? zwłaszcza im więcej tam ląduje (np. 1+k) Owszem ma to sens Ale mój komunikat był inny a jak tak chcesz to wydzieliłbym path i tak jak mówiłem zrobił z tego VO Nie chodzi o IDE, tylko o sam fakt iż nie ważne w jakim języku jak nie podasz wartości domyślnych to parametry trzeba podać, no a jak sprawdzasz ich typ to on musi się zgadzać, wiec nie przejdzie tam cokolwiek, jak w php5 Ten post edytował com 9.06.2016, 21:37:35 |
|
|
9.06.2016, 22:29:02
Post
#38
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
Ok. Dodałem tako-jako wsparcie dla tablic i obiektów.
Zmieniłem kolejność parametrów konstruktora. W exception zmienilem "\r\n" na PHP_EOL. Co tam jeszcze miałem? Z tym Angielskim coś ale jak konkretnie? __ +++ Ponownie zapraszam do oceny, propozycji, testów itp. __ Ps. @com, co to jest to "VO"? Bo nie rozumiem.. zarzucisz przykładem? __ Ps2. set() zwraca teraz to co file_put_contents(). Nie wiem czy o to wam chodziło ; Ten post edytował KsaR 9.06.2016, 22:41:00 -------------------- |
|
|
9.06.2016, 22:43:12
Post
#39
|
|
Grupa: Zarejestrowani Postów: 3 033 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) |
|
|
|
10.06.2016, 06:42:04
Post
#40
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Z tą piramidą chodziło o to że zamiast:
Kod if (isset($path)) { if (!file_exists($path)) { throw new \Exception('Path:'.PHP_EOL.$path.PHP_EOL.'Doesn\'t exists.'); } $this->path = $path; } else { throw new \Exception('Please specify path for cache.'); } pisze się: Kod if(!isset($path)) { throw new \Exception('Please specify path for cache.'); } if (!file_exists($path)) { throw new \Exception('Path:'.PHP_EOL.$path.PHP_EOL.'Doesn\'t exists.'); } $this->path = $path; Prawda że czytelniej? Co do serializacji albo musisz serializować wszystko albo nic Możesz serializować tylko obiekty ale musisz wtedy użyć regexp żeby wykryć co ma być deserializowane. WP ma fajnego regexpa na to, używałem. Ten post edytował Pyton_000 10.06.2016, 06:52:15 |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 09:14 |