2012-09-04 10 views
12

Powiel możliwe:
Is there a way to program 100% object-oriented in PHP?Czy istnieje odpowiednik PHP dla `public static main (String [] args)` w Javie?

Co usiłuję osiągnąć będzie wyglądać mniej więcej tak:

<?php 
     //index.php 
     class Site{ 
      public static function main(){ 
       // starts all the processing of the site 
      } 
     } 
?> 

tak, że gdy ktoś odwiedza witryny index.php strona będzie uruchom się bez żadnego kodu poza klasą.

Tak, wiem, że mogę używać __autoload lub nawet spl_autoload_register do obsługi automatycznego ładowania klas, ale to najprawdopodobniej będzie trzeba dodać poza klasą.

Mam wątpliwości, czy to jest możliwe, ale nie wiem, dlaczego nie byłoby to możliwe.

+0

Dlaczego kiedykolwiek potrzebujesz punktu wejścia w php ??? – perilbrain

+0

@deceze tak, że wygląda na to, że może spełniać wymagania mojego pytania, jednak tak często, jak wyszukiwałam, nigdy nie pojawiał się w wynikach. Mogłem użyć niewłaściwych informacji w moich poszukiwaniach. – JRSofty

+0

Tak, jest ... funkcja publiczna __construct() {/ * Zrób coś na temat budowy obiektu * /} – Matth3w

Odpowiedz

18

nr

punkt wejścia Java jest zdefiniowane jako sposób main. Punkt wejścia PHP jest zdefiniowany jako pierwszy wiersz pierwszego pliku, który zostanie wykonany. Musisz będzie zacząć od "proceduralnego" kodu.

+0

Dzięki za odpowiedź bezpośrednią. Zastanawiałem się nad tym w mojej głowie przez ostatnie dwa dni, szukając możliwych bezpośrednich odpowiedzi na to pytanie. Sądzę, że potrzebuję więcej praktyki z moimi kryteriami wyszukiwania SO, ponieważ znalazłeś duplikat. – JRSofty

1

Możesz napisać swoją klasę strony w ten sposób i sprawić, że klasa skonstruuje wszystko, ale nadal potrzebujesz pliku wejściowego, aby zainicjować klasę. Możesz "uruchomić" swoją witrynę jednym wierszem w pliku indeksu. Nie wydaje się wielkim inhibitorem elastyczności.

Tak, odpowiedź byłaby nie :)

0

Nie ma takiego pojęcia po wyjęciu z pudełka z php. Będziesz musiał mieć coś w pliku index.php lub czymś w pliku .htaccess, który przekieruje użytkownika do żądanego pliku, ale klasa zawsze będzie musiała zostać zaindeksowana kodem:

-1

Możesz to osiągnąć bardzo łatwo bij za pomocą .htaccess na stronie użytkownika:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

Twój plik index.php wil następnie przetwarza dane. Dzięki 1 linii kodu proceduralnego możesz stworzyć klasę i przejść dalej.

<?php 
     //index.php 
     class Site{ 
      public static function main(){ 
       // starts all the processing of the site 
      } 
     } 

     Site::main() 
?> 

Zobacz mój tutorial/blog.

+0

Niestety @JvdBerg to nie to, czego szukałem. Twój przykład nadal pokazuje 'Site :: main()', którego starałem się ominąć. Które teraz wiem na pewno nie jest możliwe przy użyciu PHP. – JRSofty

Powiązane problemy