$date = new Date??();

Le
Michael
Bonjour à tous,

j'ai les classes suivantes:

abstract class DateBase
{
//
}

final class DateFR
{
//
}

final class DateUS
{
//
}

je sais depuis un cookie ou depuis $_GET la langue souhaitée par le
visiteur: FR ou US

plutôt que de faire un truc du genre:

var $date;

if ($langCode == 'FR')
$date = new DateFR();
else if ($langCode == 'US')
$date = new DateUS();

j'aurai aimé faire quelque chose du genre

$date = new Date$langCode();

C'est possible ça en PHP?

Merci d'avance

Mike
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
thierry
Le #65027
bonjour

j'aurai aimé faire quelque chose du genre

$date = new Date$langCode();

C'est possible ça en PHP?
oui


au moins comme ça:
eval("$date = new Date$langCode();");

thierry

Gromitt
Le #62227
On 11 avr, 10:52, Michael wrote:

[...]

j'aurai aimé faire quelque chose du genre

$date = new Date$langCode();

C'est possible ça en PHP?

Merci d'avance

Mike


Une solution sans doute plus propre est de passer par un systeme de
Factory :

abstract class Date
{
public static function GetNew($langCode)
{
switch ((string) $langCode)
{
case 'FR': return new DateFR();
case 'US': return new DateUS();
}

throw new Exception('...'); // peut aussi etre un "return new
DateFR();" par defaut
}
}

final class DateFR extends Date
{
// ...
}

final class DateUS extends Date
{
// ...
}

$date = Date::GetNew($langCode);

Ce qui va t'éviter de trainer des "switch" à plusieurs endroits dans
le code.

Note : je n ai pas testé ce code, il se peut qu'il y ait des typos ou
des aneries.

Publicité
Poster une réponse
Anonyme