Vous n'êtes pas identifié(e).
Hello,
j'ai croisé ce bount de code :
J'imagine que c'est pour dire qu'on veut récupérer la référence de l'objet retourné mais j'aimerai bien une confirmation
Merci à tous
Dernière modification par Maskime (14-05-2009 13:34:22)
La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes
Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs
Hors ligne
Résolu : RTFM
http://fr.php.net/manual/fr/language.re … s.pass.php
D'ailleurs pour les utilisateurs avancé de PHP ça peut être intéressant de lire ce petit article sur les références dans PHP
La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes
Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs
Hors ligne
Même après avoir lu la doc, j'avoue ne pas comprendre ce qu'est censée produire cette déclaration.
Je dois être fatigué, ou juste un gros nul.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je dois être fatigué, ou juste un gros nul.
Optons pour la fatigue
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Alors je dois être très, mais très, très fatigué.
Ou d'un grosseur de nullité incommensurable.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je nage dans l'incompréhension
Vous souhaitez retourner une valeur par référence, pas par valeur.
Cela vous permet d'éviter de copier une variable.
Solution
La syntaxe permettant de retourner une valeur par réféence est similaire à celle
permettant de passer u argument par référence. Cependant, plutôt que de placer un
& devant le paramètre, il faut le placer devant le nom de la fonction :
*/
function &wrap_html_tag($chaine,$balise='b'){
return "<$balise>$chaine</$balise><br />";
}
/*
De même, vous devez utiliser l'opérateur d'assignation =& à la place de l'opérateur =
lorsque vous invoquez la fonction
*/
$texte='ceci est une chaine';// ça c'est moi qui l'ai ajouté
$html =& wrap_html_tag($texte);
//tout le reste c'est moi qui l'ai ajouté
echo $texte;
echo $html;
$html = wrap_html_tag($texte);
echo $texte;
echo $html;
/*
Discussion
A la différence du passage des valeurs aux fonctions, où un argument est
passé soit par valeur, soit par référence, vous pouvez facultativement choisir
de ne pas assigner une référence et de prendre simplement la valeur de retour
de la fonction. Utilisez simplement = à la place de =& et PHP atribuera la valeur
plutôt que la référence.
*/
et j'obtiens
Notice: Only variable references should be returned by reference in G:\www\PHPDeb\reference.php on line 19
ceci est une chainececi est une chaineNotice: Only variable references should be returned by reference in G:\www\PHPDeb\reference.php on line 19
ceci est une chainececi est une chaine
dont le source html est
ceci est une chaine<b>ceci est une chaine</b><br />
Bref, je ne suis pas plus avancé, l'avertissement semble contredire les auteurs et les deux syntaxes semblent fournir le même résultat.
Si vous pouviez m'expliquer :
1. pourquoi cet avertissement
2. à quoi tout cela rime-t'il
3. où j'ai merdé dans ce bout de script et pourquoi.
On verra ensuite pour comprendre l'utilisation de cette syntaxe dans le cadre d'une déclaration de méthode public static d'une classe, sujet intial de ce post.
Merci à quiconque saura éclairé mon vieux cerveau hébété.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Glop,
Pour les notices, d'après la doc :
une alerte E_NOTICE est envoyée si le code tente de retourner une expression dynamique...
Ceci ne produit plus de notices.
Pour les points 2 & 3 je nage aussi mal que toi...
Alain.
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Dankon Alain,
Ce point n'était pas ma plus grande interrogation (quoique), mais ça dégage l'esprit d'une préoccupation pour lui permettre de se concentrer sur le reste.
Le hasard veut que je sois en train de traduire l'Appendix A de «Learning PHP Data Objects (PDO)» Appendice qui est une «Introduction to OOP in PHP5». Je baigne donc en pleine POO d'où ma curiosité pour ce post de Maskime.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Enfin une explication que j'ai pu comprendre (si, si, ça arrive).
Le lien, dans la doc php, était dans la page dont Maskime nous avait fournit le lien, il fallait juste aller jusqu'à là :
Retourner des références.
Donc c'est pour obtenir, dans une variable, une référence (donc une indirection) à un attribut d'une instance de classe. Ce qui permet d'interagir sur l'attribut en modifiant la variable. Disons que c'est pour une commodité d'écriture, car, sinon, je ne vois pas bien l'intérêt.
Dis comme ça, pour le newbie en POO, c'est de l'espéranto (voire de l'hébreu), mais l'exemple dans le lien est très simple et clair, et en français.
Bon, je vais pouvoir reprendre une activité normale.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Il ne faut pas oublier quand même que en php5, les objets sont passés par référence par défaut.
Voir : http://fr2.php.net/manual/fr/language.o … rences.php
Aussi, la ligne de code postée par Maskime me laisse un peu perplexe...
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Je suis bien d'accord, ça semble encore moins utile, hors contexte, sauf à ce que ce soit de la POO PHP4, ou que quelque chose, justement dans ce contexte dont nous ignorons tout, vienne justifier le recours à cette demande de référence.
Je me sens moins fatigué ce matin, voire moins enveloppé de nullité crasse.
Ça doit être parce que j'ai pris une douche.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Une piste : la méthode est déclarée static, c'est à dire qu'elle est accessible en dehors de toute instanciation de la classe, d'où l'intérêt éventuel de pouvoir la référencer.
Imaginons une classe faite uniquement de propriétés et de méthodes public static, on pourrait, théoriquement, sans jamais instancier la classe, émuler un méta-langage, je pense à quelque chose que vous n'avez peut-être pas connu, le langage extensible FORTH.
C'était, un peu, aux langages de programmation ce que XML est aujourd'hui aux langages de description.
Marrant comme les concepts réapparaissent au fil du temps.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
C'est en cela que la jeune génération ne pourra en rien te supplanter mon cher MK : ton savoir acquis au fil des époques (;)) est d'une valeur incommensurable.
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Au risque de me répéter, t'aurais pas oublié MAAIIITREEEE ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Le FORTH ou comment les petits ruisseaux font de grands fleuves...
C'est vrai que ça ne rajeunit pas tous ça
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Au risque de me répéter
Non ! a ce niveau là, c'est plutôt que tu radotes
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Pas d'accord :
radoter intransitif 1er groupe (conjugaison)
1. Tenir des propos décousus qui prouvent un affaiblissement de l’esprit.
Il est si vieux qu’il radote.
Il ne sait plus ce qu’il dit, il ne fait que radoter.
Il commence à radoter.2. (Figuré) (Familier) Dire des choses sans raison, sans fondement.
Qu’est-ce que vous me radotez là?
Ce n'est pas la même chose, espèce de psittaciste !
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
espèce de psittaciste !
Bon, je l'avoue !! Moi aussi, je répète sans comprendre (pour l'instant) ce que PDO implique
Alors, dans ce cas [et ce cas ci seulement] je revendique mon psittacisme PDO'logique ! Mais cela ne va pas durer !
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Hello,
Je suis surpris que ce petit post est suscité une telle curiosité
Pour info je suis sur un projet qui a commencé en PHP4.
Mais il faut croire que les développeurs qui ont pris la suite n'ont pas tenu compte des évolutions de PHP et j'ai des appels par référence un peu partout dans le code, à tel point que je comprenais plus ce qu'il se passait
La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes
Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs
Hors ligne
Bonjour,
je me permet d'intervenir dans cette discussion car j'ai eu moi aussi un peu de mal à comprendre l'utilité du passage par référence en C++.
Il me semble que ça remplace les pointeurs très utilisés en C.
C'est donc une manière de pouvoir modifier la valeur de la variable, car ce n'est pas la valeur qui est renvoyée, mais la référence, ou encore le
pointeur ou encore carrément l'adresse de la variable...
Voilà, sinon, j'ai trouvé intéressante la discussion sur PHP5 qui est orienté objet. Je pense m'y mettre rapidement comme je connais la
programmation orientée objet avec le C++ et le java.
Merci aux auteurs du site, il est très intéressant !
Ralph
Hors ligne