Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Układ klas w core FW
Athlan
post 20.01.2007, 18:00:47
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Od dawna używam mojego FW do trzerzenia projektów. Moje klasy są umieszczone w katalogu /core/ frameworka, który rzy tworzeniu instancji głownej klasy jest skanowany. W taki sposób mapowane są wszystkie klasy, które później w __autoload() są includowane po wygenerowanych ścieżkach.

Ostatnio jednak pomyślałem, że jest to rozwiązanie bardzo elastyczne, jednakże pochłania te kilka milisec działania aplikacji. Pokusiłem się o zastanowienie jak inaczej można ładować klasy. Podsunął mi się projekt Zend Framework i podobna do niego aplikacja Rapide. Scieżka tak naprawde zawarta jest w nazwie klasy, przysłowiowe poziomy katalogów wyznaczają znaki _ . Poztanowiłem zebra plusy i minusy obu sposobów.

Mapowanie core:
  • [+] Klasy mogą leżeć w różnych folderach, niezależnie od ich nazwy
  • [+] Luźne powiązanie pomiędzy nazwą klasy, a ścieżką położenia pliku
  • [-] Trzeba zmapować core
Rozwiązanie Zend Framework:
  • [+] Nie trzeba mapować core, ścieżki są sztywne
  • [-] Nazwa jest ściśle uzależniona od położenia klasy
  • [-] Masa folderów z zazwyczaj jednym plikiem wyjątku
Mimo tego, że więcej minusów znalazłem w opracowaniu Zend'a i tak jestem bardziej przychylny do tego sposobu, bo nazwę przykładowo Zend_Cache_Exception, można zmienić na Zend_Exception_cache, wówczas mamy jeden folder ze wszystkimi wyjątkami. To samo tyczy się interfejsów.

Gdyzie mnie również nazewnictwo, każde wejście do folderu to znak _. Chciałbym, zby wejscie do folderu było rozdzialane poprzez kolejną wielką literę, np zamiast Zend_Cache_Exception piszemy ZendCacheException. To milsze dla (przynajmniej mojego) oka. W związku z tym napisałem skrypt (na szybko funkcja mniej więcej jak by się dzielił string, oczywiście tablicę zamienie na stringi oddzielone "/"):
  1. <?php
  2.  
  3. function ExplodeByUpper($sString)
  4. {
  5. $aExplosion = array();
  6.  
  7. $iLenght = strlen($sString);
  8. $iLastPosition = $iLenght;
  9.  
  10. for($iPosition = $iLenght - 1; $iPosition >= 0; $iPosition--)
  11. {
  12. if($sString[$iPosition] === strtoupper($sString[$iPosition]))
  13. {
  14. $aExplosion[] = substr($sString, $iPosition, ($iLastPosition - $iPosition));
  15. $iLastPosition = $iPosition;
  16. }
  17. }
  18.  
  19. return array_reverse($aExplosion);
  20. }
  21.  
  22. var_dump(ExplodeByUpper('AlaMaBrzydkiegoKota'));
  23.  
  24. ?>

Prph powiedział, że moje nazewnictwo klas (rozpoczynające dir entry z wielkich liter) może mnie ograniczyć, dlaczego to nie wiem... rozmowa się urwała, dlatego proszę o dokładne wyjaśnienie.

Co Wy na ten temat sądzicie? Jaki uklad wybrać? A może macie inne pomysły rozmieszczenia plikow komponentów framewroka?

Prosiłbym o przykłady, teorię znam. Jak Wy macie to zrobione w swoich FW smile.gif

Pozdrawiam, Athlan smile.gif

Ten post edytował Athlan 20.01.2007, 18:01:54


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post

Posty w temacie
- Athlan   Układ klas w core FW   20.01.2007, 18:00:47
- - dr_bonzo   CytatPrph powiedział, że moje nazewnictwo klas (ro...   20.01.2007, 18:54:06
- - Athlan   CytatI jaki w tym problem? Robisz to raz i zapisuj...   20.01.2007, 19:23:43
- - athabus   Cytat(Athlan @ 20.01.2007, 18:00:47 )...   20.01.2007, 19:28:15
- - dr_bonzo   CytatMożnaby było generować jakąś teblicę zaserial...   20.01.2007, 19:31:23
- - cadavre   Ja dziś napisałem klasę do obsługi __autoload...   20.01.2007, 20:50:44
- - Athlan   @cadavre, tak ale myśle nad tym, żeby się robiła o...   20.01.2007, 21:25:03
- - cadavre   md5 na folder? Odczytać RecursiveDirectoryIterator...   20.01.2007, 21:27:41
- - Cysiaczek   Proponuje prościej. Zrób mapę i zapakuj do statycz...   20.01.2007, 22:59:33
- - Athlan   @cadavre, no tak, ale mapujemy core, a tego chemy ...   20.01.2007, 23:22:17
- - cadavre   Ten czas naturalnie przy przetwarzaniu 100x. Ale i...   21.01.2007, 00:33:05
- - Athlan   Dobra, klamka zapadła, zdecydowałem się na sposób ...   21.01.2007, 00:58:55
- - dr_bonzo   Po co ci czytelna mapa -- ona ma byc czytelna tylk...   21.01.2007, 02:40:07
- - mysz   Co do rozdzielania po wielkich literach: do tego ł...   21.01.2007, 11:27:36
- - athabus   Co do odświeżania mapy i jej zerowania to ja zasto...   21.01.2007, 11:39:59
- - Athlan   CytatBTW uważam, że przechowywanie całego rozkłada...   21.01.2007, 12:57:30
|- - athabus   Cytat(Athlan @ 21.01.2007, 12:57:30 )...   21.01.2007, 13:37:27
- - dr_bonzo   Co rozumiem przez mape klas (to co w php Pro / Aut...   21.01.2007, 14:53:25
- - J4r0d   Cytat(Athlan @ 21.01.2007, 12:57:30 )...   21.01.2007, 23:18:00
- - Athlan   CytatCo u Ciebie robi kalsa główna? Klasa główna,...   22.01.2007, 08:48:06


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: 14.08.2025 - 23:56