2010-01-15 16 views
1

J'adore l'élégance de Zend_Controller_Router_Rewrite et les différentes classes de routes qu'il utilise. Je voudrais écrire un système de routage très similaire en tant que composant autonome afin que je puisse traduire les URL en un ensemble de paramètres et les réassembler. L'idée est de les utiliser pour sélectionner, disons, un gestionnaire de normalisation d'URL par chemin.Conseils pour l'écriture/la conception d'un routeur URL en PHP utilisant OOP

J'ai envisagé d'étendre les classes Zend Controller Route pour créer la mienne. Mais, ces classes semblent très profondément routées (si vous excusez le jeu de mots) dans la langue de domaine du Zend MVC.

Connaissez-vous un paquet de routage autonome/un ensemble de classes utilisables dans mon projet? Le routeur zend est-il un exemple de modèle de conception particulier que je pourrais utiliser si j'écrivais le mien?

Avez-vous des conseils sur l'écriture d'un routeur URI?

Répondre

1

Vérifiez le routeur URL dans le cadre PHP alliage:
http://alloyframework.org/manual/url-router/

Il y a une rubrique spécifique à l'utiliser en dehors du cadre comme une bibliothèque autonome, et à mon avis, il est une solution beaucoup plus élégante que Zend_Controller_Router_Rewrite.

+0

Merci. Je n'avais jamais entendu parler d'Alloy. J'aime sa philosophie "Explicit over Implicit". et "OOP ... qui ne vise pas à être comme Java" - sympa. Je regarde dedans. –

+0

Dommage, ça a l'air bien mais, je viens de le remarquer c'est min PHP 5.3. J'essaie de lécher une application héritée en forme de pré-curseur pour la rendre prête pour la version 5.3. Donc, devra attendre jusqu'à ce que je puisse l'utiliser. J'aime l'architecture HMVC - tout est nouveau pour moi. –

+0

Le routeur d'URL dans Alloy n'utilise aucune fonctionnalité 5.3 à ce stade, il devrait donc être prudent de supprimer simplement les espaces de noms pour les utiliser dans le code PHP 5.1 ou 5.2. En outre, le routeur provient d'un projet PHP5 (pas 5.3) que j'ai commencé à appeler AppKernel (http://github.com/actridge/AppKernel) et qui a été assimilé dans le framework Alloy. Les concepts principaux sont toujours les mêmes, et tout est encore testé. –

0

J'espère que je ne comprends pas votre question. Je n'ai pas utilisé Zend_Controller_Router, mais le codeigniter et le routeur cakephp explose un paramètre url par '/', et les mappent à différents contrôleurs et méthodes, ce qui, je pense, n'est pas difficile à implémenter de zéro.

+0

Merci. C'est une réponse parfaitement raisonnable. Cependant, je cherche à l'utiliser pour acheminer un méli-mélo d'urls un peu plus complexes et hérités. En utilisant diverses stratégies et combinaisons de règles. Le routeur Zend peut faire ces choses. En fin de compte, je pourrais juste aller à travers leur code et l'utiliser comme un imprimé bleu. Étais juste de mettre les palpeurs avant de commencer, au cas où la solution pourrait me être remise sur une plaque. –