2010-11-13 12 views
6

Próbuję znaleźć przewodnik po konwencjach dotyczących plików/folderów PHP.Konwencje dotyczące struktury folderów/plików?

Używam GitHub i chcę mieć pewność, że podążam za standardową konwencją, aby nie mylić użytkowników.

Każda pomoc zostanie doceniona.

+2

Struktura konwencji za to, co ? Aplikacja MVC? Prosta strona internetowa? – chchrist

Odpowiedz

3

PHP naprawdę nie ma standardu. Jeśli korzystasz z jakiegoś frameworka (np. CakePHP, Zend Framework, itp.), Możesz nałożyć na ciebie pewien standard.

Jeśli nie używasz biblioteki innej firmy, która wymusza strukturę, po prostu użyj zdrowego rozsądku. (Umieść obrazy w katalogu obrazów, pliki dołączone w katalogu zawierającym itd.) Osoby, które pobierają i instalują aplikacje PHP, będą już używane do każdej aplikacji, wykonując inne czynności. Fakt, że dajesz mu jakąś myśl, daje Ci przewagę nad konkurencją :)

3

Możesz wybrać dowolną strukturę katalogów. Ale jeśli chcesz wiedzieć o najlepszych praktykach, przyjrzyj się, jak to się dzieje w frameworkach, na przykład symfonii.

Spójrz: http://www.flickr.com/photos/deia/402335716/

Oto kilka z nich:

  • Cały kod, który jest dołączony, należy umieścić na zewnątrz korzenia dokumentu.

  • Szablony HTML powinny znajdować się w osobnym katalogu.

  • Biblioteki i klasy powinny znajdować się w katalogu "lib".

Głównie to tylko rozsądne rozwiązania, a nie ścisłe konwencje.

5

Jak powiedział speshak, PHP nie ma standardów i konwencji (w tym własnej biblioteki standardowej).

Jednakże:

  1. W katalogu publicznym (zazwyczaj public_html) sklep tylko statyczne zasobów (obrazy/JS/CSS) i jeden plik index.php PHP, który jest ograniczony do mniej więcej tak:

    <?php 
    
    
    require '/path/to/app/outside/public/html/start.php'; 
    $app = new App(); 
    $app->run(); 
    
  2. Sama aplikacja powinna być przechowywana poza publicznym katalogiem.

  3. Struktura plików może odzwierciedlać nazwy klas, więc: Project\Util\XML\Parser będzie przechowywany w pliku /path/to/the/project/Project/Util/XML/Parser.php.
  4. Oczywiście kod strony trzeciej może być przechowywany w oddzielnym folderze, powiedzmy vendor - to dość powszechna konwencja.
3

Myślę, że najbardziej oczywistym z nich są twoje biblioteki. Powinieneś nazwać swoje klasy, takie jak YourCompany_Module_Class, jeśli chcesz być kompatybilny. Korzystając z tego standardu, biblioteki mogą być używane razem z innymi bibliotekami o tej samej nazwie, bez konfliktów i problemów. Nowa przestrzeń nazw w PHP 5.3+ pomaga w osiągnięciu tego. Możesz mieć pewne wskazówki na ten temat na Zend Coding Standards - File Naming i PSR-0 Standard Proposal.

Co więcej, lepiej utrzymywać przyszłość w pamięci i odpowiednio planować strukturę folderów. Na przykład załóżmy, że przesyłasz obrazy do user_images. Ok. Ale co się stanie, gdy projekt zacznie się powiększać, a teraz masz dziesiątki tysięcy plików w jednym folderze. Musisz zbudować jakiś schemat, który pozwoli ci przechowywać ~ 1k obrazów na katalog w największym stopniu jak 12/56/154.jpg.

Z czasem zobaczysz wiele takich problemów i możliwości. Ale można spojrzeć na bieżących projektów i uczyć się od nich za darmo :)

2

Jest to:

https://github.com/php-pds/skeleton

podstawie data collected from various open-source projects, dokument ten proponuje konwencję nazewnictwa dla wielu głównym poziomie katalogi przeznaczone do różnych powszechnych celów, a także konwencje nazewnicze dla plików dokumentacji na poziomie głównym.

nie uważam, że ta obejmuje wszelkie wyobrażalne scenariusz, ale miło jest być w stanie wskazać na to i wskazują jesteś wszelkich starań, aby osiągnąć pewną spójność w obrębie projektów :-)

Powiązane problemy