6

Xin chào các bạn, chỉ là một câu hỏi nhỏ ở đây .. (hy vọng!)Khung của tôi nên có bao nhiêu thư mục?

Tôi đã thử một loạt các cấu trúc thư mục khác nhau cho khung công tác MVC PHP của tôi. Trong khi làm điều này, tôi nghĩ ra một vài lý do để tách các phần khác nhau của ứng dụng khỏi nhau.

Ví dụ, giả sử đây là cấu trúc hiện tại của tôi:

- index.php 
- private/ 
    - application/ 
     - ... (MVC stuff. Irrelevant I think...) 
    - config/ 
     - config.php 
    - framework/ 
     - bootstrap.php 
     - includes/ 
     - library/ 
      - ... (Framework classes) 
    - libraries/ 
     - Zend/ 
     - PEAR/ 
- public/ 
    - css/ 
    - images/ 

Con đường tôi có nó, tôi có thể cập nhật khuôn khổ đơn giản bằng cách ghi đè /private/framework/ thư mục, mà sẽ không ảnh hưởng đến cấu hình khung của người dùng ở /private/config/ hoặc thư viện của bên thứ ba trong /private/libraries/.

File /index.php được sử dụng gần như hoàn toàn để nạp /private/framework/bootstrap.php tập tin, trong đó sẽ có nghĩa là cập nhật các /private/framework/ thư mục cũng sẽ cập nhật bootstrapping chính tập tin (Tiết kiệm cho tôi từ việc phải cập nhật các tập tin /index.php, mà sẽ ở lại như là, vì không có nhiều ở tất cả trong nó).

Ngoài ra, ứng dụng cũng tách biệt với mọi thứ để làm với khung, vì vậy người dùng có thể chuyển đổi/thay đổi/cập nhật ứng dụng của mình khi cần mà không phải lo lắng về các thư mục khác.

Tôi có đi đúng hướng ở đây liên quan đến việc tách các thư mục với nhau để giúp họ cập nhật dễ dàng hơn không?

Tôi đã nhìn thấy trong một số khuôn khổ mà họ có cả hai họ /tin/thư viện//private/application/ thư mục bên trong thư mục khuôn khổ của họ ... nhưng điều này dường như với tôi như nó sẽ rất khó để cập nhật lên phiên bản mới hơn của khung nếu cần. Hay tôi đang nghĩ về nó một cách sai lầm?

Bạn có thể xem cấu trúc thư mục trước đây của mình here nếu bạn quan tâm. Cái mới của tôi hơi khác một chút (hy vọng tốt hơn ...), cũng như câu hỏi của tôi, vì vậy tôi nghĩ nó bảo đảm việc đăng một câu hỏi mới.

Nó không phải là nhỏ của một câu hỏi như tôi đã có thể hy vọng, nhưng ah tốt! ;)

Cảm ơn trước =)

Trả lời

2

Tôi khuyên bạn nên tách mã khuôn khổ khỏi mã ứng dụng. Khung phải nằm trong một thư mục cấp cao nhất và ứng dụng dưới một thư mục khác.

Thực ra ... Tôi khuyên bạn nên xem cấu trúc thư mục được CakePHP sử dụng.

+0

Thực ra, Bánh là một trong những khuôn khổ mà tôi đã nghiên cứu gần đây. Bạn có nghĩa là cấu trúc dir của tôi ở trên không hiển thị cùng một số lượng tách mà Cake không? Ngoài các thư mục chính của tôi nằm trong thư mục 'private /', hai cấu trúc này trông khá giống với tôi. Ngoài ra, cấu trúc của chúng có thư mục 'Bánh/config /', có nghĩa là nếu bạn đã cập nhật thư mục 'Bánh /', 'Bánh/config /' sẽ bị ghi đè .. phải không? Nhưng tôi đoán điều đó sẽ không ảnh hưởng nhiều đến Cake, vì trong tập tin đó chỉ có một biến có vẻ như được thiết lập, và bởi chính khuôn khổ đó, không phải là người dùng. – manbeardpig

+0

Vâng, đó là ý tôi.Tuy nhiên, bánh có hai tập tin cấu hình. Có app/config và cake/config. Trước đây là cấu hình ứng dụng - cơ sở dữ liệu, bộ nhớ cache, muối, các công cụ như thế. Sau này chứa một định danh phiên bản, cấu hình cho cấu trúc thư mục và một số công cụ xử lý unicode. Có một thế giới khác biệt giữa cấu hình ứng dụng và cấu hình khung công tác. Tôi nghĩ 'khuôn khổ' và 'ứng dụng' phải là các thư mục cấp cao nhất với 'công khai' ở đâu đó trong 'ứng dụng'. Điều này thực thi sự tách biệt tốt hơn giữa mã khung công cụ và mã ứng dụng. – Kalium

+0

Tôi đã có một cảm giác đó là trường hợp, kể từ khi một biến được xác định trong bánh/config là cho phiên bản Cake. Được rồi, vì vậy nếu tôi đã làm những gì bạn vừa đề xuất và 'công khai /' được đặt trong 'application /', tôi có sử dụng framework của mình để trình bày tất cả các tệp css/js/img hoặc htaccess để định tuyến các cuộc gọi css/js/img tới thư mục/application/public /? – manbeardpig

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