Sprytne struktury organizacji aplikacji PHP?

10

Istnieje milion i jeden struktur systemu plików, które wchodzą w niezliczoną liczbę dostępnych projektów Open Source. Rzeczy takie jak moduły, pliki językowe, domeny, biblioteki stron trzecich, migracje, internacjonalizacja, kopie zapasowe i syslink do innych części systemu dały początek wielu podejściom do organizacji systemu plików projektu.

Jako programista PHP zastanawiam się, czy wśród projektów zaczyna pojawiać się jakakolwiek normalizacja. W PSR-0 w końcu mamy standard nazewnictwa i ładowania plików - ale moja wiedza na temat reszty komponentów tworzących system i tego, jak można sobie z nimi poradzić, jest niczym.

Mamy do czynienia z czymś więcej niż tylko MVC, więc jakie są przykłady dużych projektów prawidłowo obsługujących wszystkie te rzeczy?

Xeoncross
źródło
3
Jako inny programista PHP nie spodziewałbym się zdrowego rozsądku po komponentach PHP
CamelBlues
2
@CamelBlues Opierając się na czystych szansach, niektórzy programiści PHP muszą w końcu coś zepsuć i zrobić coś dobrze.
Xeoncross,
Nie widziałem aż tyle standaryzacji. Do ostatnich kilku lat będziesz miał swoje foldery na rzeczy front-end (js, css), a potem będziesz mieć dołączenia lub biblioteki lib, a następnie szablony lub motywy i to wszystko. Ostatnio, gdy frameworki MVC zyskują popularność, wszystko jest niejasne. Powiedziałbym, żeby nie martwić się o używanie standardu i po prostu wyjaśnij, co się dzieje w twojej konkretnej aplikacji.
Jason

Odpowiedzi:

3

Naprawdę nie jest możliwa standaryzacja sposobu projektowania projektów, ponieważ „to zależy”.

Jeśli wprowadzisz standardową strukturę, ale niektóre z nich nie są odpowiednie do opracowywanych wymagań, możesz uzyskać dodatkowy hałas, którego nie potrzebujesz. Podobnie, jeśli standardy będą musiały działać dla szerokiej gamy projektów, będą musiały uwzględnić zbyt wiele różnych scenariuszy.

Naszym zadaniem jako programistów jest poszukiwanie wzorców i najlepszych praktyk oraz stosowanie ich do wykonywanego zadania. Korzystamy z naszego doświadczenia i wiedzy, aby wybrać odpowiednią strukturę systemu plików dla projektu, nad którym pracujemy.

Fenton
źródło
+1 Jako całość zgadzam się z tobą, jest to z pewnością ważny punkt. Jeśli jednak usuniesz rzeczy poza językiem (foldery kopii zapasowych, skrypty cron / build, zasoby statyczne itp.) I po prostu skupisz się na samym języku - nie sądzę, aby można było zastosować ten sam argument. Języki mają już nałożone ograniczenia. Ustalenie, jak ułożyć wszystkie klasy i blokady kodu, aby miały sens dla każdego projektu, jest prawdziwym i osiągalnym celem.
Xeoncross,
0

Wydaje się, że nie trwa wiele wysiłków normalizacyjnych i szczerze mówiąc, nie widzę korzyści. Jest tylko jedna zasada, której powinieneś przestrzegać, a mianowicie, że nigdy nie powinieneś mieć pod dokrootem rzeczy, które tam nie należą (podstawowe zabezpieczenie).

Poza tym wybrałbym tylko to, co ma sens dla projektu.

Jeśli używasz MVC (albo w ramach frameworku, albo ad-hoc), wówczas podstawowa struktura z / modelami, / views i / controllers ma sens. Ale nawet jeśli nie jesteś, zwykle masz jakąś warstwę dostępu do danych z klasami, które są mapowane na twoje jednostki danych; sensowne jest posiadanie katalogu dla nich; zazwyczaj masz też kilka klas logiki biznesowej i funkcji narzędziowych, więc dla nich inny katalog; jeśli korzystasz z systemu szablonów, szablony przechodzą do innego katalogu; a następnie prawdopodobnie potrzebujesz katalogu „bibliotek”, w którym umieścisz wszystkie biblioteki stron trzecich. (Po osiągnięciu tego punktu i tak robisz MVC).

Jeśli projekt jest naprawdę duży, prawdopodobnie można go podzielić na funkcjonalne podmoduły; jeśli podmoduły są dość niezależne, sensowne jest użycie ich jako najwyższego poziomu zamiast jednego dodatkowego katalogu dla wspólnego kodu.

tdammers
źródło