8797 sujets

Développement web côté serveur, CMS

Bonjour,

Sans doute trop influencé par la philosophie DRY, j'aimerais éviter la répétition d'une même information à deux endroits d'un tableau associatif. Voici grossièrement la structure de mon array:

$pagesList = array(


    'home' => array(
        
        
        'FR' => array(
        
            'browserTitle'  =>  'Le titre de ma page',
            'menuName'      =>  'Accueil'
        
        ),
        
        
        'EN' => array(
        
            'browserTitle'  =>  'I am the title!',
            'menuName'      =>  'Welcome'
        
        )
        
        
    ),
    
    
    'about' => array(
        
        
        'FR' => array(
        
            'browserTitle'  =>  'À propos',
            'menuName'      =>  'Qui sommes-nous?'
        
        ),
        
              
        'EN' => array(
        
            'browserTitle'  =>  '[b]About us[/b]',
            'menuName'      =>  '[b]About us[/b]'
        
        )
        
        
    )
    



);


Est-il possible d'éviter la répétition des chaînes de caractères en gras? En d'autres termes, attribuer au menuName ciblé la même valeur que le browserTitle qui le précède?
Merci!

Cordialement,
B.
Salut Benjamin Smiley cligne ,

OK pour la philosophie DRY mais là je trouve que tu exabuses un p'tit peu Smiley biggol !

Blague à part, pour ce genre de cas je n'alimenterais que le browserTitle et au moment du traitement je rajouterais un test : SI menuName n'existe pas (ou n'est pas alimenté...) ALORS utiliser browserTitle.

A+ Smiley smile
Ah oui effectivement, c'est une manière de voir les choses. Smiley smile
Bon et sinon, ne fut-ce que pour ma "culture générale", une idée pour la manière de réaliser ce que je souhaite?
Regardes du côté de array_fill_keys ...

Concrètement :
$keys = array('browserTitle', 'menuName');
$pagesList = array(
    'home' => array(
        'FR' => array(
            'browserTitle'  =>  'Le titre de ma page',
            'menuName'      =>  'Accueil'
        ),
        'EN' => array(
            'browserTitle'  =>  'I am the title!',
            'menuName'      =>  'Welcome'
        )
    ),
    'about' => array(
        'FR' => array(
            'browserTitle'  =>  'À propos',
            'menuName'      =>  'Qui sommes-nous?'
        ),
        'EN' => array_fill_keys($keys, 'About us')
    )
);

Modifié par Heyoan (02 Dec 2007 - 23:17)
Bonsoir,


ou encore
'browserTitle'  =>  'About us',
'menuName'      =>  &$pagesList['about']['EN']['browserTitle']


Ok, c'est nawak Smiley biggol


PS: ou sans la référence si on veut pouvoir les modifier séparément par la suite.
Modifié par Necromantik (02 Dec 2007 - 23:30)
Necromantik a écrit :
'browserTitle'  =>  'About us',
'menuName'      =>  &$pagesList['about']['EN']['browserTitle']
Smiley lol

Sinon pour aller au bout du DRY :
$keys = array('browserTitle', 'menuName');
$pagesList = array(
    'home' => array(
        'FR' => array(
            $keys[0]	=>  'Le titre de ma page',
            $keys[1]	=>  'Accueil'
        ),
        'EN' => array(
            $keys[0]	=>  'I am the title!',
            $keys[1]	=>  'Welcome'
        )
    ),
    'about' => array(
        'FR' => array(
            $keys[0]	=>  'À propos',
            $keys[1]	=>  'Qui sommes-nous?'
        ),
        'EN' => array_fill_keys($keys, 'About us')
    )
);
Heyoan a écrit :

Sinon pour aller au bout du DRY : [...]

Tu as oublié FR et EN Smiley biggol
$lang = array('FR', 'EN');
$keys = array('browserTitle', 'menuName');
$pagesList = array(
    'home' => array(
        $lang[0] => array(
            $keys[0]	=>  'Le titre de ma page',
            $keys[1]	=>  'Accueil'
        ),
        $lang[1] => array(
            $keys[0]	=>  'I am the title!',
            $keys[1]	=>  'Welcome'
        )
    ),
    'about' => array(
        $lang[0] => array(
            $keys[0]	=>  'À propos',
            $keys[1]	=>  'Qui sommes-nous?'
        ),
        $lang[1] => array_fill_keys($keys, 'About us')
    )
);


Mes plates excuses pour le pourrissage de sujet Smiley lol Smiley sweatdrop
Bonjour,

Merci pour vos réponses. Smiley smile
Il n'y a donc pas une méthode "simple" pour y parvenir, c'est à dire sans créer de tableau supplémentaire? Quelque chose en fait dans le style de ce que proposait Necromantik dans son premier post… mais qui fonctionne? Smiley ravi
Ben... en fait en utilisant la notation ( ... => ...) je vois pas trop Smiley rolleyes .

Sinon, sans créer le tableau $keys tu peux toujours faire :
...
'EN' => array_fill_keys(array('browserTitle', 'menuName'), 'About us')
...
Smiley hmm
Modifié par Heyoan (03 Dec 2007 - 11:53)
Bon et bien, c'est pas mal comme ça… Merci! Smiley smile
Néanmoins, si quelqu'un passe par là et verrait une solution qui nous aurait échappé, je reste preneur. Smiley murf