2010-07-22 10 views
15

Piszę moją pierwszą aplikację PHP. Wszyscy mówią o tym, aby bootstrap.php zainicjować swoją aplikację. To ma sens i ułożyłem jeden, z którego jestem zadowolony. Są dwie rzeczy, których nie rozumiem, i którego nikt nie wydaje się wspomnieć:Podstawy bootowania PHP

  1. Gdzie mogę zadzwonić do mojego boostrap od? Czy umieszczam go na każdej stronie? Proszę mi powiedzieć, że jest lepszy sposób ...

  2. Jak mogę to zrobić, aby mój bootstrap nie był wywoływany częściej niż potrzeba? Zakładam, że należy go wywołać tylko na początku aplikacji lub na początku nowej sesji.

Odpowiedz

13

1: Ogólnie bootstrap znajduje się w katalogu "application". Jest wywoływany z katalogu "publicznego", który jest na tym samym poziomie, co aplikacja (nie w środku). Plik index.php w folderze publicznym powinien zawierać plik bootstrap.php i tam należy ustawić opcję Document_Root (należy pamiętać, że trzeba zmienić/dodać niektóre ścieżki włączania, aby działała)

2: Powinno tylko być zawarte raz w pliku index.php w folderze publicznym. Włączenie go powinno wystarczyć, jeśli zostało zrobione poprawnie.

Nadzieję, że pomaga.

+4

Innymi słowy: Istnieją dwa katalogi obok siebie: 'application' (dla źródeł aplikacji, niedostępnych z sieci) i' public' (dla obszaru publicznego, widoczne z sieci i ustawione jako 'DocumentRoot' w Apache). W 'public' znajduje się' index.php', który jest front-endem wyświetlanym przez serwer i zawiera 'application/bootstrap.php', który jest dostępny tylko ze skryptów PHP, a nie z sieci, i uruchamia aplikację . Jest to skrypt o nazwie pierwszej aplikacji, ale w kontekście 'public/index.php'. – SasQ

+1

_... który jest front-endem wyświetlanym przez serwer, i zawiera on \ ** '../ application/bootstrap.php' ** _ który jest dostępny tylko ze skryptów PHP ..._ – DanFromGermany

1

zależy to od tego, co robi plik bootstrap. Jeśli jest to tylko plik, który ustawia niektóre ustawienia ini i takie, aby stworzyć rozsądne środowisko wykonawcze i ustanowić połączenie z bazą danych, wystarczy zamienić go w require_once w swoich skryptach. Jeśli jest to bardziej jednopunktowy wpis, możesz skonfigurować swój serwer tak, aby filtrował wszystkie żądania do niego i wysyłał do odpowiednich skryptów kontrolera.

5

Spójrz na singleton pattern. Możesz podwoić swój bootstrap klasy jako pojemnik zasobów, np .:

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

Można include lub require plik lub użyj autoloader i upewnij się, że masz połączenie do instancji obiektu na wszystkich stronach. Możesz nawet zadzwonić pod numer getInstance() w dolnej części pliku, po definicji klasy.

Albo możesz użyć routingu opartego na adresie URL i wszystkie twoje żądania przechodzą przez pojedynczy plik index.php, taki jak Zend Framework. Albo jeszcze lepiej, użyj Zend Framework.

Ta odpowiedź zakłada, że ​​robisz OOP w/PHP> = 5, co naprawdę jest drogą do zrobienia.

8

To zależy od architektury aplikacji.

Jeśli twoja architektura to stara, dobra "stado skryptów php" - skrypty PHP wywoływane bezpośrednio z przeglądarki - wtedy uwzględnisz ją na górze każdego skryptu, w taki czy inny sposób.

Większość programistów (i frameworków) w tych dniach przesyła wszystkie swoje żądania za pośrednictwem /index.php w taki czy inny sposób, zwykle z pewnym przebudowym URL-em, aby tworzyć ładne, ładne adresy URL, które użytkownicy mogą zobaczyć.

W dzisiejszych czasach powinieneś prawdopodobnie robić to drugie, a przynajmniej myśleć o tym. Prowadzi to do znacznie lepszej organizacji, a co ważniejsze, pozwala na zachowanie całego kodu poza katalogiem głównym serwera, co jest dobrą praktyką bezpieczeństwa z kilku powodów, które wykraczają poza zakres tej odpowiedzi.