Variable et fonction dynamique

Eléphant du PHP | 135 Messages

17 déc. 2008, 16:51

Bonjour !

je n'ai jamais eu à faire au variable dynamique dans un de mes projets mais je sais
que ca peut être utile j'en suis conscient !

j'ai vu pas mal de site qui en parles mais ça n'arrive pas à rentré comme il faut dans ma tête lol

le principe parait simple pourtant :

$var = 'variable';

/**
 * on créer une variable qui porte le nom de la valeur $var
 * mais si on connais pas la valeur de $var comment peut on créer d'avance
 * une variable qu'on ne connais pas ?
 *
 * je suis surement à coté de la plaque lol
 *
 */
$variable = 'resultat';

echo ${$var}    ou    $$var;  // Affiche resultat



Le concept est pas mal mais je vois pas encore comment on peux s'en servir dans une appli !
je ne suis même pas sur d'avoir compris sont utilité :roll:

pour moi ça sert à ce que l'utilisateur créer ça variable !

et bien sur c'est pareille pour les fonctions dynamique !

merci pour votre aide

ViPHP
AB
ViPHP | 5818 Messages

17 déc. 2008, 18:19

C'est typiquement le type de sujet où l'on va te dire "c'est bien de le savoir pour le jour où tu en aura besoin..." sans que l'on te donne un exemple probant :wink:

J'ai dû l'utiliser une ou deux fois mais je ne me souviens plus à quelle occasion...

Eléphant du PHP | 422 Messages

17 déc. 2008, 18:47

La dernière fois que j'ai utilisé à ce genre de technique de redirection de variables, c'est quand je programmais en assembleur dans les années 80.

A mon avis, tu peux largement t'en dispenser. Et je conseillerais même de ne jamais utiliser ce truc : il doit toujours y avoir une autre solution plus simple. C'est comme les fonctions dynamiques (un nom de fonction passé en paramètre) :
Mais bon, pour la culture générale, ...

Eléphant du PHP | 135 Messages

17 déc. 2008, 18:49

C'est typiquement le type de sujet où l'on va te dire "c'est bien de le savoir pour le jour où tu en aura besoin..." sans que l'on te donne un exemple probant :wink:

J'ai dû l'utiliser une ou deux fois mais je ne me souviens plus à quelle occasion...
La dernière fois que j'ai utilisé à ce genre de technique de redirection de variables, c'est quand je programmais en assembleur dans les années 80.

A mon avis, tu peux largement t'en dispenser. Et je conseillerais même de ne jamais utiliser ce truc : il doit toujours y avoir une autre solution plus simple. C'est comme les fonctions dynamiques (un nom de fonction passé en paramètre) :
Mais bon, pour la culture générale, ...

Merci pour ce petit moment de philosophie :D

C'est sympa de votre pars mais ça réponds pas vraiment à ma question ! :roll:

si je m'y intéresse pour ton information c'est que ça fais parti des tests que j'ai passer
pour un entretiens d'embauche !

donc tu comprendra que je me pose la question !

Que je l'utilise ou pas je dirais que c'est mon problème (merci quand même pour le conseille)
ce qui m'importe surtout c'est de comprendre son fonctionnement avec un petit exemple !

Je penses pas que les personnes qui on crée ça pour php, l'ai fais pour décorer !
peut être que ça ne vous sert que très rarement parce que les applications que vous faite n'en
on pas l'utilité !

maintenant si vous ne savez pas je peux comprendre et si c'est le cas,
bien je propose à quelqu'un qui sait de venir nous aider comme on ça ça fera d'un pierre 3 coup mdrrr

après tous on est la pour s'entraider.... :wink:

Soyons constructif merci :D

ViPHP
ViPHP | 2287 Messages

17 déc. 2008, 19:19

je n'ai jamais eu à faire au variable dynamique dans un de mes projets mais je sais
que ca peut être utile j'en suis conscient !

Le concept est pas mal mais je vois pas encore comment on peux s'en servir dans une appli !
je ne suis même pas sur d'avoir compris sont utilité :roll:
Ca fait 8 ans que je fais du php à toutes les sauces, en environnement professionnel, personnel et associatif. J'ai poussé le langage assez loin et j'ai bien pris le temps d'explorer ses recoins les plus tordus :-)

Et pas une seule fois je n'ai trouvé une bonne raison d'utiliser les variables variables. J'en ai trouvé une fois, dans un projet que j'ai repris, sans que l'utilisation me paraisse soit judicieuse soit pertinente.

Ce que je pense des variables variables :
- C'est très bien que ça existe et ça peut toujours servir de les connaître.
- Ca peut être utile parfois _mais_ je n'ai jamais encore rencontré le cas où cela s'impose comme LA solution au problème. C'est pour moi une solution (mauvaise) parmi d'autres (meilleures) qui a un sérieux inconvénient (grosse perte de lisibilité et de traçabilité du code) dont il faut être conscient.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 422 Messages

17 déc. 2008, 19:32

Je penses pas que les personnes qui on crée ça pour php, l'ai fais pour décorer !
Tu sais, ceux qui ont écrit PHP ont aussi écrit des fonctions donnent l'heure de lever du soleil ou des fonctions qui permettent de convertir une date au format du calendrier révolutionnaire. Ce n'est pas de la décoration, certes, mais ce ne sont pas des fonctions franchement indispensables ...

Idem pour ces variables dynamiques : oui, ça existe. Et ce n'est pas par manque "d'esprit positif" que nous te répondons que ça ne sert pas à grand chose. D'ailleurs, permets-moi de te dire que je n'apprécie pas trop ce procès d'intention et le ton légèrement désinvolte de ta réponse.

On peut comprendre ton angoisse vis à vis d'un examen (c'est une donnée que tu n'avais pas signalé dans ton message initial, alors pas la peine de s'énerver), mais je te propose de chercher sur Google des exemple d'utilisation des variables dynamiques en PHP autres que les tutoriels ... Tu risques d'y passer du temps. Je crois que tu peux croire AB, Calimero (et un peu moi aussi) quand on te dit que c'est un truc qui ne sert vraiment pas à grand chose.
Modifié en dernier par caroube le 17 déc. 2008, 19:33, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

17 déc. 2008, 19:32

- Ca peut être utile parfois _mais_ je n'ai jamais encore rencontré le cas où cela s'impose comme LA solution au problème. C'est pour moi une solution (mauvaise) parmi d'autres (meilleures) qui a un sérieux inconvénient (grosse perte de lisibilité et de traçabilité du code) dont il faut être conscient.
J'en suis arrivé à la même conclusion. En fait la dernière fois que j'ai utilisé cette solution c'est dans du javascript pour me simplifier la vie et éviter de passer par des prototypes. Donc même si mon code fonctionne sans problème on ne peut pas dire que ce soit un code exemplaire :)

Eléphant du PHP | 135 Messages

17 déc. 2008, 19:35

très bien mais ça réponds toujours pas à ma question !

ma question n'est pas de savoir si c'est utile ou pas mais d'avoir un petit exemple qui m'aide à
en comprendre le mécanisme !

après je jugerais de son utilité dans mes applis !

vous l'avez tous utilisé mais personne ne sais me répondre !

Depuis le début je ne reçois que des réponses détourné on se croirai au sénat :D
je n'apprécie pas trop ce procès d'intention et le ton légèrement désinvolte de ta réponse
elle était pas mal celle la ! lool
je te propose de chercher sur Google des exemple d'utilisation des variables dynamiques en PHP autres que les tutoriels
Et c'est bien pour ça que je suis la car on en parles mais ne donne pas d'exemple !

si vous penser que ça ne sert pas c'est votre opinion, votre choix que je respect certe
mais je souhaite comprendre et c'est aussi mon droit sur ce forum qui existe pour ce genre
de questions !

aussi je viens pour obtenir une réponse concrète à ma question !
cela ne veux pas dire que je n'écoute pas vos conseilles !
bien au contraire si je viens la c'est pour avoir la chance de rencontrer des gens expérimenté !

bien que vos conseilles soit pertinent il n'en reste pas moins que j'ai envie
de comprendre ce qui me permettrais de savoir pourquoi vous la trouver inutiles à souhait !

ViPHP
AB
ViPHP | 5818 Messages

17 déc. 2008, 20:04

Ce que l'on te dis c'est qu'il n'est pas facile de trouver de bons exemples d'utilisation qui ne soit pas optimisables en faisant autrement.

Par contre si tu veux l'inverse c'est très facile
foreach($_REQUEST as $Key => $Valeur) $$Key = $Valeur;  
Mais je doute que ce type d'exemple te soit utile pour passer des examens :lol:
Modifié en dernier par AB le 17 déc. 2008, 20:10, modifié 1 fois.

Eléphant du PHP | 422 Messages

17 déc. 2008, 20:08

Et c'est bien pour ça que je suis la car on en parles mais ne donne pas d'exemple !
Et tu ne t'es pas demandé pourquoi au lieu de nous parler de ton "droit" à avoir une réponse.

Maintenant, des exemples et des tutoriels il y en a plein sur le Web : tous aussi bidons les uns que les autres parce que sans rapport avec une situation opérationnelle, mais qui te permettront sûrement de comprendre puisque c'est ça que tu veux.

Eléphant du PHP | 135 Messages

17 déc. 2008, 20:23

:D

Ah je vous retrouves enfin lool
Mais je doute que ce type d'exemple te sois utile pour passer des examens
Certes c'est pas grand chose mais je connaissais pas !

et je trouve ça intéressant ! et je t'en remercie AB
Et tu ne t'es pas demandé pourquoi au lieu de nous parler de ton "droit" à avoir une réponse.
je ne veux pas dire le droit d'avoir une réponses mais avoir le droit de comprendre je force
personne à me donner de réponse si les gens le font c'est par gentillesse et je les en remercie !
maintenant si tu souhaites répondre c'est cool, je te force pas !

en poussant un peu mes recherches je sais aussi que les variables dynamique
peuvent servir à un moteur de template

exemple:
public function setVariable()
{
     preg_match_all('#\$\{(.*)\}#U' $this->buffer, $varnames, PREG_MATCH_ORDER);
     
     $varNames[1];

     foreach($varNames as $varName)
     {
          global $$varName;
          $this->buffer = preg_replace('#\$\{'.$varName.'\}#', $$varName, $this->buffer);

     }
}
j'ai trouver ça dans un bouquin

biensur ce n'est qu'un partie du code mais dans ce genre de cas je comprend mieux

si vous avez des exemples du meme type je suis prenneur

Mammouth du PHP | 959 Messages

17 déc. 2008, 20:46

Je m'en suis servis un jour dans une class. ;)
En fait, ce genre de chose, soit ça sert totalement à rien, soit, un jour, ça nous arrange et on se dit "Ahhh ! C'est une bonne ruse que j'ai faite là :) "

Voilà l'exemple, simplifier bien sûr :
$this->pointColor = 'black';

/* ... */

$black = imagecolorallocate($image, 0, 0, 0); // Noir
$white = imagecolorallocate($image, 255, 255, 255); // Blanc
/* Puis toutes les couleurs standards... */

/* ... */

imagefilledrectangle($image, $posX, $posY, $posX+100, $posY+100, ${$this->pointColor});
:)

Eléphant du PHP | 135 Messages

17 déc. 2008, 20:53

En fait, ce genre de chose, soit ça sert totalement à rien, soit, un jour, ça nous arrange et on se dit "Ahhh !
c'est que je constate en effet et merci pour ton exemple !

j'ai aussi trouver un exemple sur les variable avancer !
il parle aussi des fonctions dynamique chose que je voulais voir aussi !

c'est en anglais !!

http://www.onlamp.com/pub/a/php/2001/05 ... tions.html

Eléphant du PHP | 422 Messages

17 déc. 2008, 22:16

Ce qui peut se faire de manière tout aussi efficace et avec beaucoup moins de risque d'erreurs (surtout s'il y a pas mal de lignes entre la définition des variables et leur utilisation) de la manière suivante :
$this->pointColor = 'black'; 

/* ... */ 

$couleur['black'] = imagecolorallocate($image, 0, 0, 0); // Noir 
$couleur['white'] = imagecolorallocate($image, 255, 255, 255); // Blanc 
/* Puis toutes les couleurs standards... */ 

/* ... */ 

imagefilledrectangle($image, $posX, $posY, $posX+100, $posY+100, $couleur[$this->pointColor]);