Je cherche à ajouter un routage dynamique, REST-esque à une application PHP. J'adorerais utiliser une bibliothèque de routage existante pour ne pas avoir à réinventer la roue.
Cependant, quand je regarde des choses comme Slim et F3, elles viennent toutes avec des choses que je ne veux pas - comme les modèles et MVC - incluses. Puisque je veux juste du routage, je me retrouverais avec beaucoup de code cadre dans mon application dont je n'ai pas besoin.
Existe-t-il une bonne bibliothèque qui ne fait que du routage? Ou suis-je coincé avec l'importation d'un cadre complet ou la réinvention de la roue?
Essayez Klein :
Fichier unique, autonome et robuste:
"klein.php est un routeur ultra-rapide pour PHP 5.3+"
En raison des réponses anciennes à cette question, je pense que ce serait une assez bonne idée de mentionner des solutions plus à jour au cas dans le PO.
Les 2 solutions qui me sont venues à l'esprit dès que j'ai vu votre question:
Phroute est construit sur FastRoute, donc ils nécessitent tous les deux PHP 5.4.
Si vous avez besoin d'une solution PHP 5.3+), je recommanderais certainement le routage de Slim Framework. Si vous ne voulez aucune des autres fonctionnalités fournies avec le framework, vous pouvez extraire les parties de routage et utilisez-les uniquement (SLIM est MIT sous licence, vous êtes donc autorisé à faire quoi que ce soit))
J'ai utilisé le routage mince autonome, dans un de mes projets - DaGhostman\CodeWave @ github, voir balises <= 2.4, les parties relatives sont dans Application\Core
& Application\Controller
.
Essayez Dispatch: https://github.com/noodlehaus/dispatch
require 'dispatch.php';
get('/', function () {
echo "Hello world!\n";
});
dispatch();
C'est un framework de routage à fichier unique pour PHP. Très léger, très facile à travailler. Celui-ci et Slim sont mes favoris.
Je n'ai pas du tout besoin d'un cadre complet. Si vous avez besoin d'un ORM, essayez Redbean.
Si vous avez besoin d'un moteur de modèle, utilisez Twig.
Avec cette approche, vous installez simplement ce que vous utilisez.
PHP - Routeur sérieusement simple est vraiment agréable et simple.
PHP - RegexRouter est encore mieux à mon avis :)
Fastroute est une bibliothèque de routage autonome. Il est basé sur un modèle OOP et possède un cadre de test complet. L'open source et la licence sont gratuits. Si vous cherchez quelque chose à modifier pour vos propres projets, c'est un bon point de départ.
Découvrez Pux ( https://github.com/c9s/Pux ), qui vise des performances extrêmement élevées, une dépendance zéro, une surcharge zéro (avec prise en charge de l'extension C). tout en offrant de bonnes performances, Pux fournit également une API de type Sinatra pour vous permettre de définir vos propres chemins de routage:
$ mux = new Pux\Mux; $ mux-> any ('/ product', ['ProductController', 'listAction']); $ mux-> get ('/ product /: id', ['ProductController', 'itemAction'], 'require' => ['id' => '\ d +',], 'default '=> [' id '=>' 1 ',] ); $ mux-> post ('/product /: id ', [' ProductController ',' updateAction '] , 'require' => ['id' => '\ d +',], 'default' => ['id' => '1',] ); $ mux-> delete ('/ product /: id', ['ProductController', 'deleteAction'], 'require' => ['id' => '\ d +',], 'default' => ['id' => '1',] ); $ route = $ mux-> dispatch ( '/product/1');;.____.]
Le résultat de référence:
n = 10000 Exécution du tableau php -. 138796.45654569/s Puce runique -. 124982.98519026/s Runing klein -. 1801.5070399717/s Jambon de course -. 13566.734991391/s Aura runique -. 39657.986477172/s Exécution de symfony/routage -. 1934.2415677861/s Débit Mem php array pux aura ham symfony/routing klein Php array 138.8K/s 0B --- 90% -28% -9% -1% -1% Pux 124,98 K/s 0B 111% - -31% -10% -1% -1% Aura 39,66 K/s 0B 349% 315% --- 34% -4% -4% Jambon 13,57K/s 0B 1023% 921% 292% - -14% -13% Symfony/routage 1,93K/s 786K 7175% 6461% 2050% 701% - -93% Klein 1,8K/s 262K 7704% 6937% 2201% 753% 107% - ===== ============================= Diagramme à barres ==================== =============== tableau php 138.8K/s | █████████████████████████████████████████████████████████ ██████████ | Pux 124,98 K/s | █████████████████████████████████████████████████████████ ████ | Aura 39,66 K/s | █████████████████ | Jambon 13,57 K/s | █████ | Symfony/routage 1,93 K/s | | klein 1,8 K/s | | ============================== Informations système == ============================ Version PHP: 5.5.6 CPU Chaîne de marque: CPU Intel (R) Core (TM) i5-3427U à 1,80 GHz Avec l'extension XDebug.
Pux essaie de ne pas consommer de temps de calcul pour construire toutes les routes dynamiquement (comme Symfony/Routing). Au lieu de cela, Pux compile vos routes en plain PHP tableau pour la mise en cache, les routes compilées peuvent être chargées à partir du cache très rapidement.
Avec Pux PHP Prise en charge des extensions, vous pouvez charger et distribuer les routes 1,5 ~ 2x plus rapidement que pure PHP Pux.
Jetez un œil à la classe Router du framework lithium , car fait un usage intensif des injections de dépendance, vous pouvez configurer la classe Router , par appel de config()