2010-07-22 29 views
15

Tôi đang viết ứng dụng PHP đầu tiên của mình. Mọi người đều nói về việc có một số bootstrap.php để khởi tạo ứng dụng của bạn. Điều này làm cho tinh thần và tôi đã đặt cùng một mà tôi hài lòng với. Có hai điều tôi không hiểu và không ai có thể đề cập đến:Khái niệm cơ bản về khởi động PHP

  1. Tôi nên gọi tên lửa đẩy của mình ở đâu? Tôi có đưa nó vào mọi trang không? Vui lòng cho tôi biết có cách tốt hơn ...

  2. Tôi làm cách nào để khởi động không được gọi thường xuyên hơn mức cần thiết? Tôi cho rằng nó chỉ cần được gọi vào lúc bắt đầu ứng dụng hoặc bắt đầu một phiên mới.

Trả lời

13

1: Thường thì bootstrap nằm trong thư mục "ứng dụng". Nó được gọi từ thư mục "công khai" có cùng mức với ứng dụng (không phải bên trong nó). Index.php bên trong thư mục công cộng nên bao gồm bootstrap.php và đó là nơi Document_Root của bạn nên được đặt thành (lưu ý bạn có thể cần phải thay đổi/thêm một số đường dẫn để hoạt động)

2: Chỉ nên được đưa vào một lần thông qua tệp index.php trong thư mục công cộng. Chỉ cần bao gồm nó có đủ, nếu nó đã được thực hiện một cách chính xác.

Hy vọng điều đó sẽ hữu ích.

+4

Nói cách khác: Có hai thư mục cạnh nhau: 'ứng dụng' (đối với nguồn của ứng dụng, không thể truy cập từ Net) và' công khai' (cho khu vực công khai, hiển thị từ Net và đặt thành 'DocumentRoot' trong Apache). Trong 'public' có' index.php', là front-end được hiển thị bởi máy chủ, và nó bao gồm 'application/bootstrap.php' chỉ có thể truy cập từ các script PHP, không phải từ Net, và nó khởi động ứng dụng . Đây là kịch bản của ứng dụng đầu tiên được gọi, nhưng trong ngữ cảnh 'public/index.php'. – SasQ

+1

_... là front-end được hiển thị bởi máy chủ và nó bao gồm_ ** '../ application/bootstrap.php' ** _which chỉ có thể truy cập từ các tập lệnh PHP ..._ – DanFromGermany

1

tùy thuộc vào tệp khởi động của bạn. Nếu nó chỉ là một tập tin thiết lập một số thiết lập ini và như vậy để tạo ra một môi trường thực thi lành mạnh và thiết lập một kết nối cơ sở dữ liệu, thì chỉ cần bao gồm nó với require_once trong kịch bản của bạn là đủ. Nếu nó có nhiều hơn một điểm vào thì bạn có thể cấu hình máy chủ của bạn để lọc tất cả các yêu cầu đến nó và gửi nó đến các kịch bản điều khiển thích hợp.

5

Hãy xem singleton pattern. Bạn có thể tăng gấp đôi lớp bootstrap của bạn như là một thùng chứa tài nguyên, ví dụ .:

$bootstrap = Bootstrap::getInstance(); 
$dbConn = $bootstrap->getPdoDbh(); 

Bạn có thể include hoặc require file, hoặc sử dụng các autoloader và chắc chắn rằng bạn có một cuộc gọi để nhanh chóng các đối tượng trên tất cả các trang của bạn. Bạn thậm chí có thể gọi tới số getInstance() ở cuối tệp, sau định nghĩa lớp.

Hoặc bạn có thể sử dụng định tuyến dựa trên URL và có tất cả các yêu cầu của bạn đi qua một tệp index.php duy nhất, như Zend Framework. Hoặc tốt hơn, hãy sử dụng Zend Framework.

Câu trả lời này giả định bạn đang thực hiện OOP w/PHP> = 5, đây thực sự là cách để thực hiện.

8

Tùy thuộc vào kiến ​​trúc ứng dụng của bạn.

Nếu kiến ​​trúc của bạn là "tập lệnh php" cũ - tập lệnh PHP được gọi trực tiếp từ trình duyệt - bạn sẽ bao gồm nó ở đầu mỗi tập lệnh, cách này hay cách khác.

Hầu hết các nhà phát triển (và khung công tác) ngày nay marshall tất cả các yêu cầu của họ thông qua /index.php cách này hay cách khác, thường với một số URL viết lại đang diễn ra để tạo URL đẹp, đẹp mắt cho người dùng xem.

Trong ngày và tuổi này, có lẽ bạn nên làm việc sau, hoặc ít nhất là nghĩ về nó. Nó dẫn đến tổ chức tốt hơn nhiều, và thậm chí quan trọng hơn, cho phép bạn giữ tất cả mã của bạn bên ngoài gốc tài liệu của máy chủ web, đây là một thực hành bảo mật tốt vì nhiều lý do nằm ngoài phạm vi của câu trả lời này.

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