Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

$date = new Date??();

2 réponses
Avatar
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

2 réponses

Avatar
thierry
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

Avatar
Gromitt
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.