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?
Odpowiedzi:
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.
źródło
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.
źródło
Możesz śledzić układ projektu dla dwóch najpopularniejszych struktur aplikacji:
Zapewnią one rozszerzalną strukturę opartą na najlepszych praktykach i doświadczeniach użytkowników
źródło