$date = new Date??()

$date = new Date??() - PHP - Programmation

Marsh Posté le 11-04-2007 à 15:57:59    

Bonjour à tous,
 
j'ai les classes suivantes:
 

Code :
  1. abstract class DateBase
  2. {
  3. //...
  4. }
  5. final class DateFR extends DateBase
  6. {
  7. //...
  8. }
  9. final class DateUS extends DateBase
  10. {
  11. //...
  12. }


 
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:
 

Code :
  1. var $date;
  2. if ($langCode == 'FR')
  3.      $date = new DateFR();
  4. else if ($langCode == 'US')
  5.      $date = new DateUS();


 
j'aurai aimé faire quelque chose du genre

Code :
  1. $date = new Date$langCode();


 
C'est possible ça en PHP?
 
Merci d'avance
 
Mike


Message édité par haazheel le 11-04-2007 à 15:59:54
Reply

Marsh Posté le 11-04-2007 à 15:57:59   

Reply

Marsh Posté le 11-04-2007 à 16:01:24    

tu fais une classe dateFactory  qui se charge de t'instancier la bonne classe
 
ensuite tu fait $date = dateFactory.fileMoiAuBonFormat($lang);

Reply

Marsh Posté le 11-04-2007 à 16:20:31    

Ouais, c'est ce que je comptais faire au final... Mais qui ne change rien au problème quand même, puisque je ne vais faire que déplacer le switch dans la fonction de création de la factory.
 
Je viens de regarder sur google, et j'ai pas trouvé d'autres solutions...

Reply

Marsh Posté le 11-04-2007 à 16:25:03    

Code :
  1. $class = 'Date'.$langCode;
  2. $date = new $$class()


mais c'est [:pingouino] quand même


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 11-04-2007 à 16:49:48    

haazheel a écrit :

Ouais, c'est ce que je comptais faire au final... Mais qui ne change rien au problème quand même, puisque je ne vais faire que déplacer le switch dans la fonction de création de la factory.

 

Je viens de regarder sur google, et j'ai pas trouvé d'autres solutions...


oui , mais il ne sera la qu'une fois, tu n'as plus a t'en soucier par la sute, et tu peux ajouter des langues facilement

zapan666 a écrit :

Code :
  1. $class = 'Date'.$langCode;
  2. $date = new $$class()


mais c'est [:pingouino] quand même

 
Code :
  1. $toto ="prout";
  2. $prout = "prin";
  3. $$toto.'ntf'(" test à la con" ) ;


est un exemple tout a fait fonctionniel , equivalent a printf(" test a la con" )  ( peut etre en rajoutant des {} j'ai un doute )

 

j'adore le php

Message cité 1 fois
Message édité par flo850 le 11-04-2007 à 16:50:41
Reply

Marsh Posté le 11-04-2007 à 17:00:10    

zapan666 a écrit :

Code :
  1. $class = 'Date'.$langCode;
  2. $date = new $$class()


mais c'est [:pingouino] quand même


flo850 a écrit :

oui , mais il ne sera la qu'une fois, tu n'as plus a t'en soucier par la sute, et tu peux ajouter des langues facilement  
 
 

Code :
  1. $toto ="prout";
  2. $prout = "prin";
  3. $$toto.'ntf'(" test à la con" ) ;


est un exemple tout a fait fonctionniel , equivalent a printf(" test a la con" )  ( peut etre en rajoutant des {} j'ai un doute )  
 
j'adore le php


http://masklinnscans.free.fr/4chan/gtfo_2.gif


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 11-04-2007 à 17:05:44    

:love:
j'ai failli mettre "it's a trap", mais je me suis dis que ca allait se voir


Message édité par flo850 le 11-04-2007 à 17:05:54
Reply

Marsh Posté le 12-04-2007 à 17:29:58    

svp ça fait quoi exactement ce $$ dans ce cas là ?
Pas facile de trouver des infos seul car les moteurs de recherche ont tendance à dégommer le dollar, donc je ne trouve rien [:spamafote].
Merci beaucoup :jap:


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 12-04-2007 à 17:39:29    

Rien du tout, ça invoque des démons qui viennent te bouffer les gonades, il ne faut jamais faire un truc pareil :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-04-2007 à 17:45:09    

TotalRecall a écrit :

svp ça fait quoi exactement ce $$ dans ce cas là ?
Pas facile de trouver des infos seul car les moteurs de recherche ont tendance à dégommer le dollar, donc je ne trouve rien [:spamafote].
Merci beaucoup :jap:


$toto = prout  
 
$$toto est equivalent a $prout  
 
en pratique, c'est la mal d'utiliser ca, sauf dans un cas sur un million ( encore que, on peut toujours faire sans , ce sera plus propre )  
 
si tu couple ca a un php qui initialise les variables lors de leur premier appel et/ou qui ne te mets aps d'erreur quand tu utilise une variable non initialisée, tu tombe dans des situations diaboliques

masklinn a écrit :

Rien du tout, ça invoque des démons qui viennent te bouffer les gonades, il ne faut jamais faire un truc pareil :o


cay vrai en plus  [:skyx%40v]

Reply

Marsh Posté le 12-04-2007 à 17:45:09   

Reply

Marsh Posté le 12-04-2007 à 17:49:10    

flo850 a écrit :

$toto = prout


t'as oublié les guillemets :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-04-2007 à 18:13:55    

ok merci :). C'est comme ça que j'avais percu le fonctionnement du truc (guillemets en plus) mais ça me paraissait tellement simple pour faire quelque chose qu'on prétend souvent impossible que j'avais du mal à y croire.  
Ca a l'air effectivement dégueu mais ça fait envie quand même, genre pour la question abordée au début :p
 
Merci en tout cas :jap:


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 12-04-2007 à 18:15:20    

TotalRecall a écrit :

ok merci :). C'est comme ça que j'avais percu le fonctionnement du truc (guillemets en plus) mais ça me paraissait tellement simple pour faire quelque chose qu'on prétend souvent impossible que j'avais du mal à y croire.  
Ca a l'air effectivement dégueu mais ça fait envie quand même, genre pour la question abordée au début :p


Non, à chaque fois que l'envie peut t'en prendre d'utiliser cette monstruosité, c'est que tu abordes le problème de la mauvaise manière et que tu ne connais pas suffisament bien les outils et méthodologies à ta disposition.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-04-2007 à 03:31:03    

Bof, c'est du php, ça veut dire plein de manièreSSS de faire de la merde. [:dawa]

Message cité 1 fois
Message édité par Shinuza le 13-04-2007 à 03:31:13

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 13-04-2007 à 07:46:09    

Shinuza a écrit :

Bof, c'est du php, ça veut dire plein de manièreSSS de faire de la merde. [:dawa]


 
Quelque soit le langage t'as toujours plein de façons de pondre de la merde ... Le seul critère déterminant étant la qualité de l'interface chaise-clavier ..  Après c'est vrai que certains langages comme PHP semblent être fait pour ...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-04-2007 à 12:01:48    

c'est clair que php est farci de failles potentielles :/.
Apres, bien utilisé, c'est un excellent langage Web. Seulement il faut prendre le temps de s'intéresser aux pieges.

 

C'est assez paradoxal car c'est un langage franchement simple à apprendre, et en même temps très risqué pour quelqu'un qui ne maîtrise pas déjà la prog et les subtilités de l'informatique.

Message cité 1 fois
Message édité par TotalRecall le 13-04-2007 à 12:02:54

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 13-04-2007 à 12:31:11    

TotalRecall a écrit :

Apres, bien utilisé, c'est un excellent langage Web.


Bof.

 

C'est un mauvais langage, que ce soit en général ou pour le web, ses avantages étant la simplicité de déploiement et le fait d'être présent partout


Message édité par masklinn le 13-04-2007 à 12:31:44

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed