Il motivo per cui lo chiedo è perché non è uno script PHP un percorso? Ad esempio, se hai un articolo.php, il tuo percorso è semplicemente link .
Perché astrarre ulteriormente il concetto di una rotta quando esiste già come un semplice file?
Per capire cosa fa un router, devi prima capire che cos'è un motore di riscrittura. Dall'articolo Wikipedia (sottolineatura mia):
A rewrite engine is software that modifies a web URL's appearance (URL rewriting). Rewritten URLs (sometimes known as short, fancy URLs, or search engine friendly - SEF) are used to provide shorter and more relevant-looking links to web pages. The technique adds a degree of separation between the files used to generate a web page and the URL that is presented to the World.
Quando si utilizza un motore di riscrittura, non si ha una correlazione 1: 1 tra l'URL e uno script PHP. Un esempio dello stesso articolo:
http://example.com/wiki/index.php?title=Page_title
can be rewritten as:
Ci sono vari vantaggi per utilizzare la tecnica. Poiché PHP è in genere strettamente associato ad Apache, il motore di riscrittura più comunemente usato è mod_rewrite di Apache .
Se si desidera che gli URL riscritti, è necessario un qualche tipo di routing, poiché il routing è il processo di prendere l'URL, suddividerlo in componenti e decidere quale sia lo script da chiamare. La pagina di documentazione per il router standard di Zend Framework spiega il processo come:
Routing is the process of taking a URI endpoint (that part of the URI which comes after the base URL) and decomposing it into parameters to determine which module, controller, and action of that controller should receive the request.
La maggior parte dei framework PHP al giorno d'oggi si basa sul pattern MVC , e su un framework MVC il processo ha qualcosa di simile a questo * :
index.php
, index.php
ottiene l'URL e avvia il processo di routing. La corrispondenza dei parametri ai controller e ai metodi di solito utilizza la corrispondenza tramite espressioni regolari per essere in grado di gestire schemi di routing complessi e dinamici, noto come rotte. Buoni esempi di percorsi sono disponibili nella pagina della documentazione di routing URI CodeIgniter :
$route['journals'] = "blogs";
$route['blog/joe'] = "blogs/users/34";
$route['product/(:any)'] = "catalog/product_lookup";
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
L'array $route
contiene i pattern come chiavi e le azioni risultanti come valori in formato controller/action_method/dynamic_parameter
.
* Questo non è inteso come una descrizione del processo canonico, solo una spiegazione troppo semplificata.
Leggi altre domande sui tag php web-framework