IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Unset(), utile ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut Unset(), utile ?
    Dans la série je débute et autant prendre de bonnes pratiques, j aimerai que l on m'aide à éclaircir un point sur la gestion de la mémoire.

    De ce que j ai lu et cru comprendre c est que PHP gérait lui même la mémoire et que la portée des variables faisait que si une variable se trouvait dans une fonction, à sa sortie la variable était détruite (donc j imagine la mémoire qui lui est allouées libérée) et qu il en était de même pour les autres variables une fois la sortie du script.

    Ma question aura donc de quoi surprendre mais quelle est l utilité de la fonction Unset() ?
    J ai bien lu la doc https://www.php.net/manual/fr/function.unset.php est à l exception de cet emploi je ne comprends pas
    Si une variable globale est détruite avec unset() depuis une fonction, seule la variable locale sera détruite. La variable globale gardera la valeur acquise avant l'appel à unset().
    Si vous pouvez m éclairer ? Si la destruction de la variable par code avant que php ne le fasse est profitable, je le ferai mais nulle part je ne vois ça dans tous les tutos, tous les bouts de codes ou scripts complets que je tente de décortiquer pour m initier....

    D avance merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    Ma question aura donc de quoi surprendre mais quelle est l utilité de la fonction Unset() ?
    J ai bien lu la doc https://www.php.net/manual/fr/function.unset.php est à l exception de cet emploi je ne comprends pas

    Ceci signifie:
    Une variable ou une constante (quelle qu elle soit) a un scope (ou une portee en francais). C est a dire que suivant l endroit et/ou la maniere dont on les declare, on ne peut les utiliser que dans le scope(la partie du code) qui leur est attribue.

    Une function a son propre scope, pour qu une variable/contante puisse y etre utiliser il faut soit la passer en argument soit la declarer a l interieur meme de la function. Si elle est declare dans la fonction sont scope se limite a la function (elle n existe pas en dehors de la function).

    Unset() detruit la variable, je ne fait pas partie de l equipe php, mais logiquement cela signifie que l espace memoire attribue est libere.

    Ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    //  super-global
    $_SESSION['name'] = "paul";
     
    Function testScope($_SESSION['name'])
    {
     // une autre variable
     $foo = 38;
     var_dump($foo); // affiche int(2) 38
     var_dump($_SESSION['name']); // affiche str(4) paul (puique passe en attribue, sinon affiche undefined)
     
     unset($_SESSION['name']);
     var_dump($_SESSION['name']); // affiche undefined
    }
     
    var_dump($_SESSION['name']); // affiche str(4) paul (meme si unset() dans le scope de la function elle reste presente en-dehors)
    var_dump(foo); // affiche undefined. (Car n est definit que ds le scope de la function)

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 328
    Par défaut
    Les variables $_SESSION sont des superglobales, disponibles depuis n'importe quel scope.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut
    Merci pour vos réponses.
    Mais j ai bien compris la portée des variables et des super globales comme Session ou Server mais ma question était plus du style ...

    Est ce qu il est utile d utiliser Unset() et pourquoi étant donnée que les variables sont détruites tôt ou tard, suivant leur contexte ? Dois-je prendre cette habitude ou est-ce totalement inutile ....

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    Oui effectivement tu as raison pour les super-global, autant pour moi.

    Perso j'utilise rarement unset, voir meme quasiment jamais.

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 328
    Par défaut
    Est ce qu il est utile d utiliser Unset() et pourquoi étant donnée que les variables sont détruites tôt ou tard
    Ca va servir si tu veux supprimer des variables stockées dans la session, par exemple en cas ou un utilisateur se délogue.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [icone] site utile?
    Par MrDuChnok dans le forum Windows
    Réponses: 5
    Dernier message: 14/05/2004, 10h52
  2. [PROPERTIES] Bug dans java.util.Properties ?
    Par mathieu dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 28/04/2004, 15h11
  3. Réponses: 4
    Dernier message: 06/02/2004, 16h23
  4. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo