|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 69 ![]() |
Bonjour,
voila je sais que dans des langages comme le C si une variable est definie dans une fonction lorsque cette derniere est terminer, la variable est détruite. il ya donc des moyens de faire persister cette variable lors de la fermeture de la fonction en changeant je croi la nomenclature lors de la definition de la variable. en PHP c'est apparement la meme chose mais je ne sais pas comment faire pour sauvegarder ma variable outre la fonction faut il la definir d'une certaine fasson? j'ai tenter d'utiliser return $mafonction mais ca n'a pas l'aire de fonctionner. avez vous la solution? merci d'avance. |
|
|
00
|
|
|
#2 | ||
|
Membre actif
![]() Inscription : mars 2007 Messages : 170 ![]() |
si tu appeles une fonction ainsi :
Code :
$resultat = appelFonction($param1Eventuel,$param2Eventuel); Code :
je ne sais pas si ça répond à ta question... tu peux également retourner un booléen, un tableau, etc... |
||
|
|
00
|
|
|
#3 | ||||
|
Membre confirmé
![]() |
Autre solution est de passer ta variable en adresse
Code :
Code :
__________________
Venez voir par là... |
||||
|
|
00
|
|
|
#4 | ||
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 69 ![]() |
ho vous etes rapides ^^
bon et bien voila j'essai donc vos solution la fonction fait bien 200 lignes jai donc ecrit a la fin de ma fonction: elle est appelé de cette fasson: Code :
spgm_DisplayPicture($strParamGalleryId, $strParamPictureId, $strParamFilterFlags); Code :
max je n'est pas vraiment compris tu crée une seconde variable dans la fonction? si c'est le cas j'ai essayé mais cela revien au meme puisque la nouvelle variable est détruite lors de la fermeture de la fonction. |
||
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 69 ![]() |
Bon jai recommencé l'opération et finalement sa marche si je ne double pas l'apelle de la fonction donc sa marche !
je vous remerci Azazel et Max de votre rapidité et de votre pertinence sa fait plaisir!! à bientot! |
|
|
00
|
|
|
#6 | |||||
|
Membre confirmé
![]() |
Citation:
non tu ne créer pas de nouvelle variable, tu passes seulement l'adresse d'une variable dans laquelle tu veux que ta fonction ecrive. Du coup meme quand la fonction est terminer il ne detruit pas la variable car il s'est juste servit de l'adresse memoire de ta variable pour ecrire dans cette case memoire. normalement si tu regardes le contenu de ta variable $result après le passage dans ta fonction, il a du changer. mais par contre je me suis trompé dans le code c'est pour cela que ça ne fonctionne pas. Dans fonction 1 : Code :
Code :
Il me semble que c'est appelé passage en référence. Cela te permet entre autre d'économiser de la mémoire. Pour info
__________________
Venez voir par là... |
|||||
|
|
00
|
|
|
#7 | ||||||||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Les solutions en PHP sont semblables au C :
|
||||||||
|
|
00
|
|
|
#8 | |||
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 69 ![]() |
ha c ce que je cherchai au départ
normalement une variable static doit persister tout le long du code non? donc si j'écrit Code :
le code html générer serai mais sa ne marche pas ... mon echo n'affiche rien cette solution m'interesse car la premiere pose des probleme par la suite ... alors ya t'il une erreur dans ce que j'ai fait? car que je mette static ou rien, c'est la meme chose. max ton code a l'air interessant car il sauvegarde le resultat de ma variable , jai juste du mal a le metre en place ... ^^ EDIT: ah aprés avoir regarder l'aide sur les variable static voila ce qui est dit: Citation:
et que je puisse l'utilisé en dehors de la fonction |
|||
|
|
00
|
|
|
#9 | ||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
La théorie :
Comme en C, vous ne pourrez pas accéder à une variable locale à une fonction depuis l'extérieur avec son simple nom (ie sans référence, retour de fonction, ...). static assure sa survie après la fin de la fonction mais ne vous donne pas le droit d'y accéder dans un contexte autre que celui de la fonction. On peut facilement contourner cela à l'aide d'une variable globale faisant référence à la variable locale : Code :
La pratique : choisir la solution la plus pratique suivant votre cas, évitez autant que possible les solutions tordues comme celle ci-dessus. Par rapport à cela, vous ne nous avez pas montré votre code (la fonction et la manière dont elle appelée à plusieurs reprises selon vos dires). La persistance (variables static) est rarement utilisée en PHP et il convient de distinguer persistance et portée des variables. Par ailleurs, signalons que les variables de session sont à la fois persistantes (accessibles sur plusieurs pages) et globales (utilisables telles quelles depuis n'importe quelle fonction) mais ne concernent pas les variables de type ressources (dû à l'opération de sérialisation). Plus d'informations sur les sessions http://php.developpez.com/cours/sessions/
|
||
|
|
00
|
|
|
#10 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 69 ![]() |
je sais bien que le but des fonctions est d'optimiser la consomation de mémoire
seulement je reprends un code de galerie photo et je cherche à passer une variable venant d'une fonction dans flash enfin bon le code n'est pas fait pour ça donc je dois me débrouiller pour sortir cette variable. les variables sessions ... oui mais c'est pas un peut trop pour une variable que je n'utilise que dans un fichier? enfin c'est une possibilité ... je vais essayer ^ |
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : mars 2007 Messages : 69 ![]() |
Bon et bien l'utilisation des session fonctionne aussi bien que return
donc merci sa marche ... mais pas pour la transition en flash mais sa c'est une autre histoire! hop résolu! merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com