Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa]Klasa widoku
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Przedstawiam Wam dziś klasę widoku - jest to alternatywa dla systemów szablonów. Dzięki tej klasie możecie łatwo oddzielić logikę aplikacji od jest wyglądu.
Opis i przykłady użycia znajduje się tu:
http://nospor.pl/klasa-widoku.html

Download (klasa wraz z przykładową aplikacją):
http://nospor.pl/download/idfolder/31/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
O ile w takim linuxie to jest zajebista sprawa, to póki co żeby bawić się czymś takim w php to pierwszy raz słyszę. Człowiek starej daty jestem (IMG:style_emoticons/default/wink.gif)
Może jeszcze mi powiesz, że o narzędziach do budowania projektów Ant, Maven, Phing, wspomniany wcześniej Composer itp. itd. też nie słyszałeś? Chcesz wspierać PHP 5.2 i starsze... na prawdę pora na lekkie odmłodzenie swojego warsztatu. (IMG:style_emoticons/default/wink.gif)
Cytat
No jak ktoś to ściąga ode mnie ze strony to chyba wie, gdzie ma zgłaszać błędy (IMG:style_emoticons/default/wink.gif)
A co jak odziedziczę po kimś projekt, gdzie Twoja biblioteka będzie już w użytku? Tyle dobrze, że Twojego bloga da się wygoogleać po Twoim imieniu i nazwisku.
Cytat
Faktycznie, masz rację, nie sądziłem, że ktoś może potrzebować oddzielnych katalogów kiedykolwiek. Przez tyle lat jak programuje, nie widziałem takiego cuda, a wysyłkę maili realizowałem nie raz, stąd też i do głowy mi nie wpadło coś takiego. Naprawdę w praktyce takie rzeczy się dzieją?
Tak, i cała masa innych też. Ja też nie przewidzę całej masy przypadków, które Ty byś nazwał powszechnymi. Dlatego tak istotne jest pisanie wg reguł i standardów oraz pisanie testów. Te ostatnie w miarę szybko pozwalają wyłapać kompletnie spierniczony interfejs biblioteki.
Przed udostępnieniem biblioteki pisanej pod siebie szerszej publiczności, niemal zawsze trzeba coś poprawić.
Cytat
Na upartego można zmienić wartosci tych zmiennych a po odpaleniu widoku powrócić do starych
Takie coś to ostateczność, jak się trzeba ze słabą biblioteką obchodzić, bo alternatywy nie ma, a autor poprawić niczego nie chce. (IMG:style_emoticons/default/wink.gif) Apropos alternatyw - nie napisałeś w czym Twój kod jest lepszy od istniejących, które część z nas zna, posiadających sporą społeczność. Jaki jest killer feature tej biblioteki? (IMG:style_emoticons/default/smile.gif)
Cytat
Jak już pisałem ja jestem człowiek starej daty i takich super hiper wypasionych pro bzdur nie używam. Naprawdę nie lubię ani sobie ani innym komplikować życia. (IMG:style_emoticons/default/wink.gif)
Te cuda z reguły powstają z potrzeby i rozwiązują jakieś problemy. Jak są dobrze napisane to nie tworzą też zbyt wielu problemów. Mimo iż kiedyś twierdziłem inaczej, czyste PHP słabo się sprawdza w roli szablonów. Pomijając trywialne przypadki.
Cytat
Czemu uważam, że tutaj wyjątek jest nie potrzebny? Nie wyobrażam sobie sytuacji, że moja strona ma nagle przestać się normalnie wyświetlać tylko dlatego że z jakiegoś powodu zniknęła jakaś zmienna czy zninkął plugin z wyświetlaniem gdzieś na boku strony paru ostatnich komentarzy....
Bardzo, bardzo, bardzo złe podejście. Najmniejszy błąd powinien skutkować wywaleniem całej strony i cofnięciem wszystkich zmian jakie mogły zajść w systemie (patrz: m.in. transakcje). Wyobraź sobie, że masz formularz i przez jakąś głupią zagubioną zmienną nie wyświetlił się przy nim odpowiedni komunikat. Użytkownik klika szczęśliwy, a po przeładowaniu strony wielkie zdziwienie bo na koncie brakuje 100 zł. Czemu? Bo programista uznał, że jak się nie wyświetli wielki komunikat z informacją, że dana akcja jest płatna to nic się nie stanie.

Swoją drogą, wyjątki nie służą do obsługi sytuacji wyjątkowej tylko do obsługi błędów.
Cytat
Jak pisałem naprawdę tego nie potrzebowałem. A nie potrzebowałem z bardzo prostej przyczyny: staram się pisać poprawny kod html. Używanie apostrofów do łapania atrybutów tagów jest nie poprawnym sposobem. Do tego używa się cudzysłowi. Wystarczy trzymać się tej prostej zasady i życie staje sie prostrze (IMG:style_emoticons/default/smile.gif)
Zarówno XML jak i HTML - o porąbanym HTML5 nie wspominając - wspierają wartości w apostrofach: http://www.w3.org/TR/REC-xml/#NT-AttValue Sam też z tego staram się nie korzystać, ale można to robić, jest to jak najbardziej poprawne i wiele osób to robi. Pisałem już, że udostępniając coś publicznie, nie można wrzucić kodu pisanego stricte pod własne preferencje. Mówiąc wprost: Twój system szablonów polega na chwilę obecną przy najbardziej trywialnym zadaniu, jakim jest ochrona przed XSS.
Cytat
Może swoje lata i ma, ale ciągle napotykam na serwery, gdzie php5.3 to jeszcze odległa przyszłość.
Musiałeś zachować kompatybilność z PHP <5.3? OK. Ale i tak powinieneś trzymać się standardów (chociażby nazewnictwa klas).

Cytat
Ba, bo tylko jeden jest potrzebny.
Nie, nie jest. Co jeżeli będę mieć jakąś metodę wywołującą Twoją metodę od renderowania?
  1. function a() {
  2. $dane = ...;
  3.  
  4. return $this->abc('bla1', $dane);
  5. }
  6.  
  7. function b() {
  8. $dane = ...;
  9.  
  10. return $this->abc('bla1', $dane);
  11. }
  12.  
  13. function c() {
  14. $dane = ...;
  15.  
  16. return $this->abc('bla2', $dane);
  17. }
  18.  
  19. function abc($szablon, $dane) {
  20. $dane->set('xxx', '123');
  21.  
  22. return $this->twojObiekt->render($szablon, $dane);
  23. }
Tutaj backtrace co najmniej dwóch odwołań wstecz jest potrzebny.

EDIT:
Cytat
Jeszcze powrócę do zmiennych statycznych. Napisałeś Crozin, że jak ktoś chce nowy obiekt z innymi lokalizacjami to ma problem.
Ja zaś skolei dałem zmiennej statyczne właśnie spowodu odwrotnej sytuacji: gdy ktoś chce nowy obiekt z dokładnie takimi samymi lokalizacjami co główny widok. Gdyby to były zmienne obiektu, musiałby je na nowo ustawiać na takie same jak ma obiekt główny. ALbo pisać klasę dziedziczącą i nadpisywać metode CreateInstance. A tak nie musi nic takiego robić. A sytuacja, gdy ktoś potrzebuje nowego obiektu ale z tymi samymi parametrami wydaje mi się częstrza niż Twoja.
Whoa, whoa... to przecież wystarczy utworzyć sobie obiekt raz i korzystać z tego samego tam gdzie potrzebujesz? Albo utworzyć sobie fabrykę/repozytorium obiektów View? Każde z tych rozwiązań jest bez porównania lepsze od użycia zmiennych statycznych.

Ten post edytował Crozin 13.06.2013, 20:54:49
Go to the top of the page
+Quote Post

Posty w temacie
- nospor   [klasa]Klasa widoku   13.06.2013, 07:47:27
- - Spawnm   ViewPluginBase dał bym jako abstract. $tpl na...   13.06.2013, 08:33:52
- - pyro   Cześć. A ma coś lepszego / innego niż istniejące ...   13.06.2013, 08:35:21
- - nospor   CytatViewPluginBase dał bym jako abstract.A ma to ...   13.06.2013, 08:44:45
- - Dipter   1. Wszystkie właściwości klasy są statyczne, za wy...   13.06.2013, 14:37:18
- - Crozin   1. Brak wsparcia dla PSR-0 oraz Composera; Brak re...   13.06.2013, 15:09:42
- - nospor   @dipter ad1) Mi pasuje tak. ad2) Pewnie masz racj...   13.06.2013, 15:31:53
- - Dipter   Cytat@dipter ad1) Mi pasuje tak. ad2) Pewnie masz...   13.06.2013, 16:05:09
- - nospor   ad1) Wyjaśni mi wkońcu ktoś o jakich tu kłodach mo...   13.06.2013, 16:13:07
- - Crozin   CytatNie ma psr, nie ma composera. Brak publiczneg...   13.06.2013, 16:57:02
- - Spawnm   Cytatjak php5.3 będzie standardem, to zacznę tego ...   13.06.2013, 16:58:34
- - nospor   CytatTobie chyba nie muszę tłumaczyć wyższości wsz...   13.06.2013, 17:47:31
- - Crozin   CytatO ile w takim linuxie to jest zajebista spraw...   13.06.2013, 20:44:30
- - nospor   CytatMoże jeszcze mi powiesz, że o narzędziach do ...   14.06.2013, 07:38:46
- - Crozin   CytatChcesz mi powiedzieć, że inne systemy szablon...   14.06.2013, 14:02:36
- - nospor   CytatTak, albo przynajmniej udostępniają coś w rod...   14.06.2013, 17:12:09
- - Crozin   CytatMoim głównym celem było pokazanie, głównie dl...   14.06.2013, 19:27:12
- - nospor   CytatIMO jeżeli chciałeś zademonstrować przykład u...   17.06.2013, 11:42:06
- - uki8877   OK, bardzo mi sie spodobala ta klasa i chcialbym ...   28.05.2016, 14:52:50
- - viking   Poczytaj troszkę podstaw m.in. jak stosować namesp...   28.05.2016, 15:23:33
- - nospor   CytatCall to undefined method Db::prepare()Przecie...   29.05.2016, 22:07:28


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 Aktualny czas: 5.10.2025 - 09:03