Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [OOP] Hermetyzacja aplikacji i ścieżki w waszych frameworkach., Jak to rozwiązaliście ?
Mize
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 6
Dołączył: 26.03.2008
Skąd: Łódź

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


Witam.

Chciałbym poznać opinie i rozwiązania forumowiczów w dwóch kwestiach.
Stworzyłem swojego fw, tak by z biblotek i mechanizmów mogło korzystać kilka aplikacji na raz. To znaczy...

Kod
/diwebFramework!/
   /Applications/ /* Tutaj mam aplikacje, które oparte są o fw. */
   /Library/
   /Logs/
   /JS Library/
   /Configurations/
   /Docs/
   /Plugins/


Dotychczas aplikacje uruchamiałem tak...

  1. <?php
  2. /* Plik index w folderze aplikacji. */
  3. require('../../Diweb.php');
  4.  
  5. /* Tak odpalam konkretna aplikacje. Laduje konfiguracje i plik glowny , w ktorym juz jest kod samego programu. */
  6. Diweb::Run('application1');
  7. ?>

W moim mniemaniu zapewnia to hermetyzację, szczelność i wygodę.
I tak się zastanawiam, czy to jest właściwe rozwiązanie. Czy nie można tego lepiej zrobić ?

A teraz druga rzecz.
Jak ustalacie scieżki do konkretnych folderów framework'a jak i danego projektu.
Korzystacie ze stałych, plików czy może w każdym miejscu wpisujecie 'osobno'. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Dotychczas jade na stałych, ale ciekaw jestem jak to inaczej rozwiązać.
Czy definiuje je jakiś obiekt, lub jeszcze inaczej.

Pozdrawiam, i zapraszam do dyskusji.

Ten post edytował Mize 7.12.2008, 15:53:36
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
A teraz druga rzecz.
Jak ustalacie scieżki do konkretnych folderów framework'a jak i danego projektu.
Korzystacie ze stałych, plików czy może w każdym miejscu wpisujecie 'osobno'.
Dotychczas jade na stałych, ale ciekaw jestem jak to inaczej rozwiązać.

Na stałych. Nie ma sensu (IMHO) tworzenia osobnych obiektów tylko dlatego, aby czytać ścieżki do paru folderów, które najczęściej nie zmieniają się od momentu instalacji aplikacji. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Osobiście proponowałbym działanie na ścieżkach bezwzględnych.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Ja mam u siebie tak:
Kod
/application
/framework


a w aplikacji dostep do stalych APPLICATION_ROOT + FRAMEWORK_ROOT, do tego __autoload() i w niewielu miejscach musze korzystac z podawania sciezek. Stale to oczywiscie dirname( __FILE__ ) == czyli sciezki bezwzgledne.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #4





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Kod
/public_html/
   /EdcApplication/
       /Frontend/
       /Backend/
   /EdcEngine/
   /EdcMedia/
   /EdcPlugins/
   /EdcLanguage/


Najbardziej zaskakuje mnie w Twoim podziale /JS Library/ (no chyba ze uzywasz jakiegos frameworka do JS ale zazwyczaj jest tak ze na stronach robi się wstawki i one zawsze lecą do folderu plugins.)
Configurations też chyba powinien znajdować się wewnątrz aplikacji.
Po co masz folder Docs?

Ten post edytował Black-Berry 7.12.2008, 18:05:50
Go to the top of the page
+Quote Post
Mize
post
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 6
Dołączył: 26.03.2008
Skąd: Łódź

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


W /JS Library/ mam najpopularniejsze frameworki js, w tym jQuery, dla którego mam wsparcie w swoim frameworku.
Jak na razie korzystam z niego tylko ja, więc pare rzeczy jest zwyczajnie z wygody.

W /Docs/, trzymam licencje, dokumentacje, projekty i diagramy. Te dwa ostatnie, jak mówiłem dla własnych potrzeb.

A co do /Configurations/, to trzymam tam pliki konfiguracyjne aplikacji - czyli domyślny tryb uruchomienia, ścieżka, etc.
Z takiego pliku tworze nowy projekt, lub jeśli już takowy istnieje, to ładuje domyślne parametry.

Oczywiście każda aplikacja ma swój folder z konfiguracją w swoim katalogu.

Jeszcze dodatkowe pytanie, ograniczacie się do dwóch stałych jak FRAMEWORK_ROOT i APPLICATION_ROOT, czy stosujecie ich więcej?
Ja definiuje ścieżki dla prawie wszystkich głównych katalogów i nie wiem czy to ma sens.

Pozdrawiam.

Ten post edytował Mize 7.12.2008, 20:16:47
Go to the top of the page
+Quote Post
starach
post
Post #6





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


U mnie tak wygląda większa część pliku config.php który wczytuję w pierwszej linijce index.php ( w następnej mam dołączanie klas silnika i jego uruchomienie )
  1. <?php
  2. // -------------------------- //
  3.  
  4.    // Start - Misc
  5.        define('EXT', '.php');
  6.        define('EOL', "\n");
  7.        define('DS', DIRECTORY_SEPARATOR);
  8.    // Stop - Misc
  9.    
  10. // -------------------------- //
  11.  
  12.    // DIR_OS_TMPL :: engine/Website.php
  13.    // DIR_HREF_TMPL :: engine/Website.php
  14.    // DIR_HREF_TMPLS :: engine/Website.php
  15.    // WEBSITE_ADDRESS :: engine/Website.php
  16.    // WEBSITE_TEMPLATE :: engine/Website.php
  17.    // WEBSITE_LANGUAGE :: engine/Website.php
  18.    
  19.    // Start - Directory
  20.        define('DIR_OS_MAIN', getcwd().DS);
  21.        define('DIR_OS_MEDIA', DIR_OS_MAIN.'media'.DS);
  22.        define('DIR_OS_CFG', DIR_OS_MAIN.'config'.DS);
  23.        define('DIR_OS_CACHE', DIR_OS_MAIN.'cache'.DS);
  24.        define('DIR_OS_ENGINE', DIR_OS_MAIN.'engine'.DS);
  25.        define('DIR_OS_LIBRARY', DIR_OS_MAIN.'library'.DS);
  26.        define('DIR_OS_MODULE', DIR_OS_MAIN.'module'.DS);
  27.        define('DIR_OS_TMPLS', DIR_OS_MAIN.'templates'.DS);
  28.        define('DIR_OS_TMPLS_CACHE', DIR_OS_CACHE.'templates'.DS);
  29.    // Stop - Directory
  30.  
  31. // -------------------------- //
  32. ?>
Go to the top of the page
+Quote Post
Black-Berry
post
Post #7





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


@orglee Czy to nie jest przypadkiem sztuka dla sztuki? Nie sądzicie że najważniejsza powinna być maksymalna prostota? Czy kiedykolwiek zdażyło się żeby DS był czymś innym niż '/' albo końcówka pliku czymś innym niż .php? Poza tym jeśli decydujemy się na nazwę folderu media to nie zmieniajmy go już nigdy nie trzeba będzie wprowadzać dodatkowych definicji.
Go to the top of the page
+Quote Post
starach
post
Post #8





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


@Black-Berry Bardzo możliwe że niektóre stałe są zwyczajnie niepotrzebne. Moim zdaniem jest przede wszystkim kwestia przyzwyczajenia i upodobań. Jeśli idzie natomiast o DS to biorąc pod uwagę że moja maszyna produkcyjna jest na Windowsie nie jest to koniecznie chybiony pomysł mimo iż z tego co wiem funkcje PHP operujące na systemie plików tłumaczą ukośniki dla każdego systemu osobno.
Go to the top of the page
+Quote Post
Black-Berry
post
Post #9





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


No rozumiem że "może się zdażyć" ale przez ostatnie kilkanaście mieśięcy starając się przeiwdzieć wszystko wpakowałem się w bagno po uszy. Teraz kierując się jak największa prostotą pisze mi się o wiele łatwiej no i sypiam spokojniej bo jest mniej miejsc w kodzie które mogą się zepsuć. Projekty piszę może dłużej ale poprawek jest o wiele mniej.
Go to the top of the page
+Quote Post
plurr
post
Post #10





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

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


ja rowniez korzystam z rozwiazania, ktore podal dr_bonzo. Do tego jesli mamy virtualke lokalnie to nic sie nie powinno zepsuc podczas pakowania aplikacji na serwer (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Czasem tez mam po prostu jakas sciezke w konfigu, prostota w edycji - ale to sa pierdoły typu "errorPath".
Go to the top of the page
+Quote Post
starach
post
Post #11





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Z doświadczenia - które co prawda przebogate nie jest - wiem że należy korzystać ze ścieżek bezwzględnych. Czyli zaczynających się od root'a lub od litery partycji / dysku. Co prawda problemy ze ścieżkami miałem pisząc proceduralnie i tak naprawdę rozwiązaniem ich były właśnie ścieżki bezwzględne. Teraz używam tego sposobu przez wzgląd na przyzwyczajenie. Poza tym wydaje mi się że nazwy stałych które wybrałem są w miarę intuicyjne przez co kod jest bardziej przejrzysty.

IMO. Nie trzeba się zastanawiać czy plik który wywołuję jest w tym katalogu czy jakimś podrzędnym.
Chyba wam też się zdarzają takie same nazwy katalogów rozsiane po projekcie.
Go to the top of the page
+Quote Post
wrzasq
post
Post #12





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

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


DS to moim zdaniem niepotrzebne zamieszanie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . PHP na wszystkich platformach dopuszcza / jako separator plus pod Windowsem \, więc spokojnie można wszędzie używać /. Też kiedyś korzystałem ze stałych, ale w momencie gdy musiałem napisać aplikację korzystającą z dodatkowo plików zewnętrznego oprogramowania to potem jeszcze odpowiednie zapisywanie tej ścieżki podajej w configu... i do tego podkatalogi... i kopiowanie... nieee... odpada. A / można jak już powiedziałem bez problemów stosować wszędzie. Windows nie robi tutaj żadnej różnicy. Nie za bardzo widzę jakieś sensowne zastosowanie dla tej stałej w skryptach PHP - raczej przy generowaniu plików dla innego oprogramowania. No i odpada od razu problem, że się zapomnimy i użyjemy \ jako znaku ucieczki gdzieś (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .

-edit-

@Black-Berry: Teraz już raczej ciężko (chociaż ostatnio robiłem mailing dla jednej firmy, która nadal miała tak skonfigurowany hosting o.0), ale szczególnie w początkach PHP5 większość serwerów przed całkowitom przesiadką na PHP5 do plików .php używała PHP4, a dla PHP5 trzeba było używać .php5. Nie wspominając o oszołomach, co używają .inc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .

Ten post edytował wrzasq 12.12.2008, 07:29:00
Go to the top of the page
+Quote Post
Black-Berry
post
Post #13





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Cytat(orglee @ 11.12.2008, 22:08:40 ) *
Z doświadczenia - które co prawda przebogate nie jest - wiem że należy korzystać ze ścieżek bezwzględnych. Czyli zaczynających się od root'a lub od litery partycji / dysku.

Jak można zatem używać ścieżek zaczynających się od root'a jeśli wykupujesz serwer z folderkiem public_html a nie wiesz jak daleko ma on do roota albo literki dysku ? @.@
Go to the top of the page
+Quote Post
mike
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Black-Berry @ 12.12.2008, 11:20:46 ) *
Jak można zatem używać ścieżek zaczynających się od root'a jeśli wykupujesz serwer z folderkiem public_html a nie wiesz jak daleko ma on do roota albo literki dysku ? @.@
http://pl2.php.net/manual/pl/function.realpath.php
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


@Black-Berry: dirname( __FILE__ )
Go to the top of the page
+Quote Post
Black-Berry
post
Post #16





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Cytat(dr_bonzo @ 12.12.2008, 12:25:06 ) *
@Black-Berry: dirname( __FILE__ )

No fakt. A co to daje bo jakoś zawsze używałem względnych ścieżek i jakoś śmigało?
Go to the top of the page
+Quote Post
starach
post
Post #17





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Cytat(Black-Berry @ 12.12.2008, 12:33:19 ) *
No fakt. A co to daje bo jakoś zawsze używałem względnych ścieżek i jakoś śmigało?
Spokojniej sypiam. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
wrzasq
post
Post #18





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

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


@Black-Berry: a jak musisz na przykład uruchomić skrypt z innego katalogu, chociażby przez cron'a (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . albo inny skrypt/program chce po prostu go wywołać będąc w swoim katalogu roboczym.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.10.2025 - 06:03