Sujet : Hoa\Router::unroute et le camelCase

Salut Hywan,

Alors tout d'abord un petit bug dans le router ,

en effet quand je définie la route suivante :

$router->get('ag', '/admin/gallerie-(?<idGallerie>.*?).html', 'admin', 'gallerie');

et dans un controller je lance :

        public function IndexAction() {
                    var_dump($this->router->unroute('ag', array('idGallerie' => 'foo5454545')));
   
        }

ca me retourne : string '/admin/gallerie-.html' (length=21)

et si je met <idgallerie> et var_dump($this->router->unroute('ag', array('idgallerie' => 'foo5454545'))); j'obtiens la route escompté


Morale de l'histoire :

16:29:38 - thehawk24 : je trouve quand meme le camelCase assez facile a relire
16:29:48 - iraphael_ : oui mais complètement merdique à utiliser


Cdt thehawk

Apprend Hoa et est heureux smile

2

Re : Hoa\Router::unroute et le camelCase

Hello smile,

En effet, je passe tout en lowercase pour des raisons d'uniformité et de faciliter d'utilisation. Mais si on ne le sait pas, ça peut être gênant. Voici un patch que j'aimerais que tu appliques pour voir si le problème devient transparent (tu utilises du camlcase est ça marche quand même) :

diff -r 16179ed1845b Library/Router/Http.php
--- a/Library/Router/Http.php    Thu Sep 29 16:47:51 2011 +0200
+++ b/Library/Router/Http.php    Wed Oct 12 11:19:22 2011 +0200
@@ -487,7 +487,10 @@
 
         $rule      = $this->getRule($id);
         $pattern   = $rule[Router::RULE_PATTERN];
-        $variables = array_merge($rule[Router::RULE_VARIABLES], $variables);
+        $variables = array_map(
+            'strtolower',
+            array_merge($rule[Router::RULE_VARIABLES], $variables)
+        );
 
         if(false !== $pos = strpos($pattern, '@')) {
 

Si tu valides, je commit.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

3

Re : Hoa\Router::unroute et le camelCase

Essaye plutôt ceci :

diff --git a/Library/Router/Http.php b/Library/Router/Http.php
--- a/Library/Router/Http.php
+++ b/Library/Router/Http.php
@@ -513,6 +513,12 @@
 
         $rule      = $this->getRule($id);
         $pattern   = $rule[Router::RULE_PATTERN];
+
+        array_walk($variables, function ( $value, &$key ) {
+
+            $key = strtolower($key);
+        });
+
         $variables = array_merge($rule[Router::RULE_VARIABLES], $variables);
 
         if(false !== $pos = strpos($pattern, '@')) {

smile

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

4

Re : Hoa\Router::unroute et le camelCase

Au passage, tu devrais échaptter ton . dans .html :

/admin/gallerie-(?<idGallerie>.*?)\.html

Tu pourrais avoir des surprises sinon smile.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

5

Re : Hoa\Router::unroute et le camelCase

Ok (on en cause sur IRC pour ceux qui n'ont pas toute la discussion). Voici le patch final : http://hg.hoa-project.net/Central/rev/ef744b893978.
Impossible de modifier la clé d'un tableau en PHP, ce qui paraît logiquement finalement.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »