Domanda

Sto lavorando su un progetto personale con sede a PHP e MySQL, e sto facendo un po 'di ricerca e giocare con riscritture. Dire che ho un sito ...

http://www.myDomain.com/

E voglio avere un index.php, o di bootstrap, nella radice del dominio. Quindi, se si accede ...

http://www.myDomain.com/admin/

Sarà ancora caricare dalla index.php nel livello superiore del dominio, che gestisce l'analisi e il caricamento dei file di configurazione, e riorientare l'utente nella posizione corretta, rendendo i collegamenti piuttosto lungo la strada.

Dove dovrei iniziare nella mia ricerca e formazione su questo? Sono ad una perdita di un po '. Grazie per il vostro tempo:)


Aggiornamento:

suona come io do voglia di muoversi verso un sistema MVC con un front controller. Eventuali buone referenze su come scrivere il mio framework MVC (sarebbe molto di base). Sinceramente non vuole tirare in Zend Framework in questo momento (sarebbe rinfusa in su un sacco!)

È stato utile?

Soluzione

In sostanza, si riscrive ogni richiesta in entrata al tuo index.php. Ecco un esempio .htaccess dal href="http://kohanaphp.com" rel="nofollow noreferrer"> Kohana quadro

# Turn on URL rewriting
RewriteEngine On

# Protect application and system files from being viewed
# RewriteRule ^(application|modules|system) - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]

Quindi, il tuo esempio di potrebbe essere indirizzato a index.php/admin. Poi si può guardare $_SERVER['REQUEST_URI'] per determinare che cosa fare dopo.

Un modello relativamente comune sarebbe quella di utilizzare il primo segmento del URI come controller, e la seconda come metodo. Così, per esempio:

$segments = explode($_SERVER['request_uri'], '/');//array('admin')

if(isset($segments[0]))
{
    $class = $segments[0].'_controller';//'admin_controller

    if(isset($segments[1]))
         $method = $segments[1];
    else
         $method = 'index';
}
else
{
    $class = 'index_controller';
    $method = 'index';
}

$controller = new $class;
$controller->$method();

Questo codice non è affatto pronto per la produzione, in quanto sarebbe morire di una morte di fuoco, se per esempio l'utente visita un URL per un controller inesistente. Inoltre non fa le cose belle come argomenti della maniglia. Ma è una specie di l'idea alla base di come un framework PHP MVC funziona.

A proposito, un altro nome per quello che stai chiamando bootstrap è front controller . È possibile che google termine di trovare molte più informazioni sul modello.

Altri suggerimenti

Si avrà bisogno di guardare la configurazione del .htaccess internamente riscrivere tutte le richieste al file di bootstrap, che possono essere index.php

Kohana usa questa per farlo

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

Si può quindi accedere $_SERVER['REQUEST_URI'] per iniziare il routing delle richieste ai controllori.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top