2010-11-13 45 views
6

Tôi đang cố gắng tìm hướng dẫn về các quy ước về cấu trúc tập tin/thư mục PHP.Quy ước về cấu trúc thư mục/tệp?

Tôi đang sử dụng GitHub và muốn đảm bảo rằng tôi đang tuân theo một quy ước chuẩn để không làm người dùng nhầm lẫn.

Mọi trợ giúp sẽ được đánh giá cao.

+2

ước Cấu trúc cho những gì ? Một ứng dụng MVC? Một trang web đơn giản? – chchrist

Trả lời

3

PHP thực sự không có tiêu chuẩn. Nếu bạn đang sử dụng một số khung công tác (ví dụ CakePHP, Zend Framework, vv) nó có thể áp đặt một số tiêu chuẩn cho bạn.

Nếu bạn không sử dụng thư viện của bên thứ ba để buộc cấu trúc, chỉ cần sử dụng ý thức chung. (Đặt hình ảnh trong một thư mục hình ảnh, bao gồm các tập tin trong một thư mục bao gồm, vv) Những người tải xuống và cài đặt các ứng dụng PHP sẽ đã được sử dụng cho mỗi ứng dụng làm những việc khác nhau. Thực tế là bạn đang cho nó một số suy nghĩ đặt bạn một đầu của rất nhiều các đối thủ cạnh tranh :)

3

Bạn được tự do lựa chọn bất kỳ cấu trúc thư mục nào. Nhưng nếu bạn muốn biết về các phương pháp hay nhất, hãy xem cách thực hiện nó trong các khung công tác, ví dụ như bản giao hưởng.

Hãy xem: http://www.flickr.com/photos/deia/402335716/

Dưới đây là vài trong số họ:

  • Tất cả các mã được có, nên được đặt bên ngoài của tài liệu gốc.

  • Mẫu HTML phải nằm trong một thư mục riêng biệt.

  • Thư viện và lớp học phải nằm trong thư mục 'lib'.

Chủ yếu nó chỉ là một giải pháp hợp lý, không phải là các quy ước nghiêm ngặt.

5

Như speshak nói PHP không có tiêu chuẩn và không có quy ước (bao gồm cả thư viện chuẩn riêng của nó).

Tuy nhiên:

  1. Trong thư mục công cộng (thường public_html) lưu trữ chỉ tĩnh nguồn lực (images/JS/CSS) và một file index.php PHP mà được giới hạn trong một cái gì đó như thế này:

    <?php 
    
    
    require '/path/to/app/outside/public/html/start.php'; 
    $app = new App(); 
    $app->run(); 
    
  2. Bản thân ứng dụng phải được lưu trữ bên ngoài thư mục công cộng.

  3. Cấu trúc tệp có thể phản ánh tên lớp học, vì vậy: Project\Util\XML\Parser sẽ được lưu trữ trong tệp /path/to/the/project/Project/Util/XML/Parser.php.
  4. Tất nhiên mã của bên thứ ba có thể được lưu trữ trong thư mục riêng biệt, giả sử vendor - đó là quy ước khá phổ biến.
3

Tôi nghĩ điều rõ ràng nhất là thư viện của bạn. Bạn nên đặt tên cho các lớp của mình như YourCompany_Module_Class, nếu bạn muốn tương thích. Sử dụng tiêu chuẩn này, thư viện của bạn có thể được sử dụng cùng với bất kỳ thư viện có tên tương tự nào khác mà không có sự cố và sự cố. Các không gian tên mới trong PHP 5.3+ giúp nhiều hơn trong việc đạt được điều này. Bạn có thể có một số nguyên tắc cho điều này tại Zend Coding Standards - File Naming và tại PSR-0 Standard Proposal.

Ngoài ra, bạn nên liên tục giữ cho tương lai trong đầu và lập kế hoạch cấu trúc thư mục của bạn cho phù hợp. Ví dụ: giả sử bạn đang tải hình ảnh lên user_images. Được. Nhưng điều gì sẽ xảy ra khi dự án bắt hoặc lớn hơn và bây giờ bạn có hàng chục nghìn tệp trong một thư mục. Bạn phải xây dựng một số lược đồ cho phép bạn lưu trữ hình ảnh ~ 1k trên mỗi thư mục tối đa là 12/56/154.jpg.

Bạn sẽ thấy nhiều vấn đề và cơ hội như vậy theo thời gian. Nhưng bạn có thể nhìn vào các dự án hiện tại và học hỏi từ chúng miễn phí :)

2

Có là thế này:

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

Dựa trên data collected from various open-source projects, tài liệu này đề xuất một quy ước đặt tên cho một số gốc cấp các thư mục được chỉ định cho các mục đích chung khác nhau, cũng như quy ước đặt tên cho các tệp tài liệu cấp gốc.

Tôi không thấy rằng đây bao gồm tất cả các kịch bản có thể tưởng tượng, nhưng nó rất hay để có thể trỏ vào này và cho biết bạn đang làm cho một nỗ lực để đạt được một số tính nhất quán giữa các dự án :-)

Các vấn đề liên quan