2012-09-04 14 views
12

Eventuali duplicati:
Is there a way to program 100% object-oriented in PHP?Esiste un equivalente PHP per `public static main (String [] args)` in Java?

Quello che sto cercando di realizzare sarebbe simile a questa:

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

In modo che quando un utente visita il sito index.php il sito sarà avviare senza avere alcun codice al di fuori della classe.

Sì. So che potrei usare __autoload o anche spl_autoload_register per gestire l'autoloading delle classi, ma che molto probabilmente dovrebbe essere aggiunto al di fuori della classe.

Ho i miei dubbi che questo è possibile ma non so perché questo non sarebbe possibile.

+0

Perché mai avresti bisogno di un punto di ingresso in php ??? – perilbrain

+0

@deceze sì, sembra che potrebbe soddisfare i requisiti della mia domanda, tuttavia tutte le volte che l'ho cercato non è mai apparso nei risultati. Potrebbe essere che stavo usando le informazioni sbagliate nella mia ricerca. – JRSofty

+0

Sì, c'è ... public function __construct() {/ * Fai qualcosa per la costruzione di oggetti * /} – Matth3w

risposta

18

No.

punto di ingresso di Java è definito come il metodo di main. Il punto di ingresso di PHP è definito come la prima riga del primo file che viene eseguita. Il deve iniziare con il codice "procedurale".

+0

Grazie per la risposta diretta. Mi sono scervellato per la testa negli ultimi due giorni, mentre cercavo le possibili risposte dirette a questa domanda. Credo di aver bisogno di più pratica con i miei criteri di ricerca SO dal momento che hai trovato un duplicato. – JRSofty

1

È possibile scrivere la classe del sito in questo modo e far sì che la classe costruisca tutto, ma è comunque necessario un file di immissione per inizializzare la classe. Potresti "avviare" il tuo sito con una riga nel tuo file di indice. Non sembra un grande inibitore della flessibilità.

Quindi, risposta sarebbe no :)

0

Non esiste il concetto fuori dalla scatola con php. Dovrai avere qualcosa in index.php o qualcosa in un file .htaccess che reindirizzerà l'utente al file che vuoi, ma la classe dovrà sempre essere istanziata dal codice

-1

È possibile ottenere questo molto facile bij utilizzando un .htaccess sul tuo sito:

RewriteEngine On 

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

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

Il tuo index.php eseguirà quindi l'elaborazione. Con 1 riga di codice procedurale, puoi creare una classe e andare avanti da lì.

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

     Site::main() 
?> 

Vedere il mio tutorial/blog.

+0

Mi dispiace @JvdBerg che non è quello che stavo cercando. Il tuo esempio mostra ancora 'Site :: main()' che era quello che stavo cercando di evitare. Che ora so per certo non è possibile usando PHP. – JRSofty

Problemi correlati