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 :

Portée des Variables


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Par défaut Portée des Variables
    Bonjour, petite question concernant la portée des variables, pour purger quelques doutes


    1°) Si j'ai bien compris une variable locale , n'est utilisable que dans le script ou elle se trouve et HORS FONCTIONS, si des fonctions sont dans le script il faudra passer la variable en paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$suffix = " €";
     
    	function prix($chiffre){
    		return $chiffre . $suffix;
    	}
    Cela ne marche pas mais c'est normal c'est clair : une variable locale n'existe que dans le script ou que dans la fonction... elle est recréée a chaque appel de la fonction



    2°) On peut utiliser une variable statique, qui est persistante (garde les valeurs) mais qui restent locale et n'est utilisables que dans le script ou elle se trouve et HORS FONCTIONS, si des fonctions sont dans le script il faudra passer la variable en paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	function prix($chiffre){
                    static $suffix = " €";
    		return $chiffre . $suffix;
    	}
    Cela ne sert a rien dans ce cas mais cela marche... on compris c'est local et ca garde la valeur...




    La ou je comprend moins c'est les variables dans les Classes

    3°) Les variables locales restent locale aux FONCTIONS... ça ne change rien... au principe...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Text {
     
    	$suffix = " €";
     
    	function prix($chiffre){
    		return $chiffre . $suffix;
    	}
    }
    Cela ne marche pas mais c'est logique de ce que j'ai compris...



    4°) Par contre les variable static... elles ne sont plus LOCALE... puisque on peut les appeler dans les fonctions directement avec self::


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Text {
     
    	static $suffix = " €";
     
    	static function prix($chiffre){
    		return $chiffre . self::$suffix;
    	}
    }

    CA MARCHE alors que la variable est HORS de la FONCTION... persistante je comprend, mais elle ne semble plus être locale..

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 341
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 341
    Billets dans le blog
    17
    Par défaut
    1°) Si j'ai bien compris une variable locale , n'est utilisable que dans le script ou elle se trouve
    Je n'ai jamais entendu parler de variable "locale" en PHP
    Et non, une variable créée dans le script a.php peut être utilisée dans le script b.php, par l'entremise d'un include par exemple

    et HORS FONCTIONS
    Oui, exceptées les fonctions fléchées qui peuvent utiliser les variables de la portée parente (=> https://www.php.net/manual/fr/functions.arrow.php )

    si des fonctions sont dans le script il faudra passer la variable en paramètre
    C'est bien le principe général

    2°) On peut utiliser une variable statique, qui est persistante (garde les valeurs) mais qui restent locale et n'est utilisables que dans le script ou elle se trouve et HORS FONCTIONS, si des fonctions sont dans le script il faudra passer la variable en paramètre.
    Hum, tu mélanges un peu tout, c'est globalement faux. La variable statique a la particularité de persister entre les différents appels de sa fonction. Pour le reste ça ne change rien d'une variable classique créée dans une fonction.

    Ex. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function execute_insert_client($pdo, $id, $name)
    {
        static $insert; // null par défaut
        if ($insert === null) {
            // On prépare la requête 1 seule fois
            $sql = "INSERT INTO client VALUES (:id, :name)";
            $insert = $pdo->prepare($sql);
        }
        return $insert->execute(compact('id', 'name'));
    }
    3°) [...] Cela ne marche pas mais c'est logique de ce que j'ai compris...
    Ta syntaxe est invalide, $suffix n'est pas définie. Pour accéder à la *propriété* $suffix de ta classe il faut faire $this->suffix, avec la bonne syntaxe ça fonctionne. D'ailleurs il faut donner un "visibilité" à chaque propriété d'une classe.

    4°) Par contre les variable static... elles ne sont plus LOCALE... puisque on peut les appeler dans les fonctions directement avec self::
    Ce n'est pas une variable à proprement parler, c'est une propriété statique. Grâce à self:: toute ambigüité est levée, PHP sait où chercher a valeur.
    => https://www.php.net/manual/fr/language.oop5.static.php

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/02/2005, 09h05
  2. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  3. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  4. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  5. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05

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