2010-12-05 5 views
0

Étant donné ci-dessous sont deux fonctions PHP qui fait essentiellement la même chose, Ce que je veux savoir, c'est lequel de ces est le meilleur à utiliser?Laquelle de ces fonctions est la meilleure?

$ lang est un tableau qui stocke les autres valeurs

$lang = array(

    'default' => 'This is the default text', 

    'site' => array(
     'name' => 'Website', 
     'url' => 'website.com', 
    ), 

    'logo' => 'images/logo', 

); 

et s'il vous plaît noter que je vais utiliser l'une de ces fonctions dans l'application pour l'affichage du texte que l'application je construis soutien plusieurs langues.

Fonction 1:

function lang($text='default') { 

    global $lang; 

    $text = explode(',',$text); 

    if(!empty($text[1])) { 
     $newtext = $lang[$text[0]][$text[1]]; 
    } 
    else { 
     $newtext = $lang[$text[0]]; 
    } 

    echo $newtext; 

} 

Utilisation: <?php lang('default'); ?> or <?php lang('site,name'); ?>

Fonction 2:

function lang($text='default', $text2='') { 

    global $lang; 

    if(!empty($text2)) { 
     $newtext = $lang[$text][$text2]; 
    } 
    else { 
     $newtext = $lang[$text]; 
    } 

    echo $newtext; 

} 

Utilisation: <?php lang('default'); ?> or <?php lang('site','name'); ?>

+1

Laquelle préférez-vous? – salathe

+0

à la fois me semble bon, c'est la raison pour laquelle je vous demande les gars: D ou vous pouvez aller de l'avant et suggérer une nouvelle fonction ... –

+1

Ensuite, choisissez un (au hasard si vous ne pouvez pas décider) et l'utiliser. – salathe

Répondre

2

La seconde, mais je préfère le diviser en deux méthodes.

Ex:

GetLanguage($site) 
    returns an associative array of strings 

Et

GetLanguageKeyValue($site, $key) 
    returns value as string 
3

À mon avis, la deuxième fonction est plus logique par les arguments . Et la fonction exploser dans le premier est plus lente que les opérations avec des tableaux dans la seconde.

2

Je préfère la fonction 2: il est beaucoup plus évident qu'il y a deux paramètres.

+0

Tellement vrai. Le No 1 me rappelle le terme ["stringly taped"] (http://stackoverflow.com/questions/2349378/new-programming-jargon-you-coined/2444303#2444303) ... – delnan

Questions connexes