PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-05-2009 13:33:53

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

[Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

Hello,
j'ai croisé ce bount de code :

public static function &getInstance($sIndexName)

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 wink

Hors ligne

#2 14-05-2009 15:33:41

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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 wink

Hors ligne

#3 14-05-2009 16:12:40

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#4 14-05-2009 16:37:44

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

Maljuna Kris a écrit :

Je dois être fatigué, ou juste un gros nul.

Optons pour la fatigue wink


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#5 14-05-2009 17:35:51

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#6 15-05-2009 06:12:55

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

Je nage dans l'incompréhension

<?php
/*Extrait de PHP en action chez O'Reilly
de David Sklar & Adam Trachtenberg
Édition Françaiose traduction de Alexandre Gachet
chapitre 6-Fonctions p 152
6.6 Retourner des valeurs par référence
Problème

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 chaine

Notice: 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

<br />
<b>Notice</b>:  Only variable references should be returned by reference in <b>G:\www\PHPDeb\reference.php</b> on line <b>19</b><br />
ceci est une chaine<b>ceci est une chaine</b><br /><br />
<b>Notice</b>:  Only variable references should be returned by reference in <b>G:\www\PHPDeb\reference.php</b> on line <b>19</b><br />

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

#7 15-05-2009 10:25:18

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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



<?php
#
function &wrap_html_tag($chaine,$balise='b'){
#
   $r = "<$balise>$chaine</$balise><br />";
    return $r;
#
   }
//...
?>
 

Ceci ne produit plus de notices.

Pour les points 2 & 3 je nage aussi mal que toi... hmm

Alain.


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#8 15-05-2009 10:39:27

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#9 15-05-2009 10:51:06

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#10 15-05-2009 11:09:37

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#11 15-05-2009 11:27:13

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#12 15-05-2009 14:02:56

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#13 15-05-2009 14:41:31

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#14 15-05-2009 14:52:52

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#15 15-05-2009 15:10:23

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

Le FORTH ou comment les petits ruisseaux font de grands fleuves...
C'est vrai que ça ne rajeunit pas tous ça hmm


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#16 15-05-2009 15:26:03

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

Maljuna Kris a écrit :

Au risque de me répéter

Non ! a ce niveau là, c'est plutôt que tu radotes wink


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#17 15-05-2009 15:55:24

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

#18 15-05-2009 16:16:50

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

Maljuna Kris a écrit :

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

#19 15-05-2009 17:01:25

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

Hello,

Je suis surpris que ce petit post est suscité une telle curiosité big_smile

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 big_smile


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 wink

Hors ligne

#20 05-06-2009 17:44:55

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Re : [Résolu] On peut me confirmer le but de cette déclaration s'il vous pl

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

Pied de page des forums