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 :

Variables et fonctions


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut Variables et fonctions
    Bonjour, j'ai un probleme qui je suis sur est stupide, mais ne trouvant pas la solution j'ai besoin d'avoir vous .

    J'ai fais un fichier functions.php

    ou dedans se trouve toutes les var que je nécéssite pour mes fonctions telles que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    //Variables
     
    //Information serveur
    $var1 = blabla;
    etc...
    bref, mes variables.
    Et direct aprés j'ai mes fonctions telles que :

    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
    18
    19
    20
    21
    //Création du socket / Connection au serveur distant
    function connect ($port){
    	$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    	if ($socket === false)
    	{
    		echo "Error(1) : " . socket_strerror(socket_last_error()) . "<br/>\n";
    	} else {
    	    echo "OK.<br/>\n";
    	}
     
    	echo "Connexion sur '$address' en cours via le port '$port'...";
    	$result = socket_connect($socket, $address, $port);
    	if ($result === false)
    	{
        	echo "connection failed(2).\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "<br/>\n";
    	} else {
    	    echo "OK.<br/>\n";
    	}
    }
    //Envoi des données
    function send($sdata){
    etc......

    Donc mon souci est que mes variables déclarée en premier lieu ne sont pas prises en compte dans mes fonctions, et donc quand j'include mon functions.php dans les pages nécéssitantes, il me dit que mes variables ne sont pas déclarées.

    Une idée de pourquoi mes variables ne sont pas prises en compte?
    Apparement il n'a pas envie de prendre en compte des variables éxterne à ma fonction .

    Merci d'avance pour votre aide, votre indulgence et votre patience .

  2. #2
    Membre émérite

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Par défaut
    Pour utiliser $var1 dans une fonction, il faudra l'utiliser comme cela :
    function foo () {
    global $var1. $bar;
    echo $var1.$bar
    }

    C'est comme ca qu'on commence a n'utiliser que des tableaux, puis des objets ...

  3. #3
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut sécurité
    Il y a un problème de sécurité dans ta façon de faire. Soit tes variables ont toujours les mêmes valeurs et dans ces conditions mieux vaut les transformer en constantes,
    soit effectivement elles peuvent changer et tu crées une classe Config.php dans lesquelles tu déclares tes variables en private (si tu es en PHP5) et tu les récupères avec des fonctions. exemple

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    class ClassConfig {
        // Définitions des variables de classe
        private $_server = 'server';    // Serveur SQL
        private $_user = 'user';        // Utilisateur SQL
        private $_password = 'pass';    // Password SQL
        private $_dbname = 'dbname';        // Nom de la BDD PostgreSQL
     
        // Définitions des tables MySQL
        private $_prefix0 = '';        // préfixe des tables MySQL
     
        /** Définition des méthodes, et méthodes magiques **/
     
        // Constructeur
        public function __construct(){}
     
        // Destructeur
        public function __destruct(){}
     
        public function getSQLServer(){
            return $this->_server;
        }
     
        public function getSQLUser(){
            return $this->_user;
        }
     
        public function getSQLPassword(){
            return $this->_password;
        }
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    En éffet ce sont des variables constantes (cherchez l'erreur ).
    Bref je vais passer sa en constantes.

    Mais pour les quelques variables qui restent de véritables variables , je les utilise dans plusieurs fonctions différentes et donc il faut vraiment que je puisse les mettre à l'éxtérieur de mes fonctions non ?
    (Donc il faudrai utiliser des classes, je m'y atele tout de suite )
    Afin de pouvoir les récuperer facilement.

    Merci.

  5. #5
    Membre émérite

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Par défaut
    Citation Envoyé par is_null
    Pour utiliser $var1 dans une fonction, il faudra l'utiliser comme cela :
    function foo () {
    global $var1. $bar;
    echo $var1.$bar
    }
    Hehe ...
    Au fait David, je te conseille de lire ca

  6. #6
    Membre éclairé Avatar de B.Moncef
    Étudiant
    Inscrit en
    Août 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 75
    Par défaut
    Citation Envoyé par devoluti0n
    je les utilise dans plusieurs fonctions différentes et donc il faut vraiment que je puisse les mettre à l'extérieur de mes fonctions non ?
    (Donc il faudrai utiliser des classes, je m'y atèle tout de suite )
    Faux, utiliser des variables externes dans le corps d'une fonction ne necessite pas forcement de programmation objet, regarde plutôt la solution de is_null.

  7. #7
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut
    Citation Envoyé par is_null Voir le message
    Hehe ...
    Au fait David, je te conseille de lire ca
    Ouais, j'avais pas lu. Mais c'est comme ça que je fais de toute façon, comme quoi... après avoir lu des milliers de pages de books et pages web, la logique fini par suivre

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Citation Envoyé par is_null Voir le message
    Pour utiliser $var1 dans une fonction, il faudra l'utiliser comme cela :
    function foo () {
    global $var1. $bar;
    echo $var1.$bar
    }

    C'est comme ca qu'on commence a n'utiliser que des tableaux, puis des objets ...
    Okay ^^, mais je n'ai pas trop réagi car je ne comprends pas ce qu'est $bar.

  9. #9
    Membre éclairé Avatar de B.Moncef
    Étudiant
    Inscrit en
    Août 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 75
    Par défaut
    $bar est une variable qui sert ici juste pour t'expliquer comment t'y prendre. En gros l'exemple de is_null() pouvait tout aussi bien etre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function foo () 
    {
        global $var1;
        echo $var1;
    }

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Ah oé ok d'accord .....
    donc je met cete fonction avant mes autres fonctions c'est bien sa ? et je l'appele avant d'appeler mes autres fonctions ?

  11. #11
    Membre éclairé Avatar de B.Moncef
    Étudiant
    Inscrit en
    Août 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 75
    Par défaut
    Non. Au début de la fonction ou tu veux utiliser $var1, tu mets la ligne :
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function connect ($port)
    {
        global $var1;
     
        Code de ta fonction;
    }

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    Euh, ben oui mais non .

    En fait mon souci réside justement dans le fait que je dois utiliser une meme variable dans plusieurs fonction différentes .

    genre :

    $var = "a";


    function 1 (){

    echo $var;
    }

    function 2(){

    $var = "b":
    }


    Enfin c'est un éxemple sans queue ni tête, mais bon voilà quoi, je veux pouvoir utiliser une variable dans plusieurs fonction diférente, sans avoir à la redéclarer dans mes fonctions à chaque fois.

    Ou alors j'ai mal compris vos réponses...

  13. #13
    Membre éclairé Avatar de B.Moncef
    Étudiant
    Inscrit en
    Août 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 75
    Par défaut
    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
    18
    19
    20
    21
    22
    23
    <?php
     
    $var = 1;
     
    function foo()
    {
    	global $var;
     
    	echo $var;
    }
     
    function bar()
    {
    	global $var; 
     
    	$var++;
    }
     
    foo();
    bar();
    printf('<br /> %d', $var);
     
    ?>
    1
    2

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    , je viens de comprendre (le temps que sa monte au cerveau ...).

    Merci ! .

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Par défaut
    bon en fait j'ai un probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    define("inc","Truc à envoyer");
    $sdata = inc;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function send($sdata){
    global $sdata;
    	echo "Envoi des informations de connexion...";
    	socket_write($socket, $sdata, strlen($sdata));
    	echo "OK.<br/>\n";
    }

    non pardon, je dirai même mieu, j'ai 2 problemes !

    ceci donne lieu à l'érreur suivante :

    Notice: Use of undefined constant sdata - assumed 'sdata' in c:\program files\easyphp1-8\www\index2.php on line 31


    et à l'érreur suivante:
    Notice: Undefined variable: socket in c:\program files\easyphp1-8\www\functions.php on line 58

    $socket est en fait une variable que je créé dans une autre fonction.


    2problemes, 2questions :

    Pourquoi cette premiere erreur ?

    Comment récuperer une variable que l'on créé dans une autre fonction ?

    merci encore pour votre patience ...

  16. #16
    Membre émérite

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Par défaut
    D'abord, au sujet de $foo et $bar : http://fr.wikipedia.org/wiki/Variabl...A9tasyntaxique

    Au sujet de ton code, tu t'en sors au plus mal !
    Heureusement, la lecture de la documentation sur la portee des variables repondra a toutes questions : http://fr2.php.net/variables.scope.

    J'ai un vague souvenir d'une citation amusante : read the manual before asking, or you'll be yelled on a second time !
    (Lisez le manual avant de demander, ca evitera qu'on vous gueule dessus une seconde fois)

    Bonne lecture !

  17. #17
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut je me défoule
    Citation Envoyé par B.Moncef Voir le message
    $bar est une variable qui sert ici juste pour t'expliquer comment t'y prendre. En gros l'exemple de is_null() pouvait tout aussi bien etre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function foo () 
    {
        global $var1;
        echo $var1;
    }
    Ce qui me semble bien plus clair et pédagogique. Ah la la... le fameux copier/coller des docs...

    Citation Envoyé par B.Moncef Voir le message
    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
    18
    19
    20
    21
    22
    23
    <?php
     
    $var = 1;
     
    function foo()
    {
        global $var;
     
        echo $var;
    }
     
    function bar()
    {
        global $var; 
     
        $var++;
    }
     
    foo();
    bar();
    printf('<br /> %d', $var);
     
    ?>
    Vive la POO
    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
    18
    <?php
    class UneClasse {
        // public $_var;
     
        public function foo($_var){
            return $_var;
        }
     
        public function bar($_var){
            return $_var;
        }
    }
     
     
    echo UneClasse::foo(1);
    echo '<br/>';
    echo UneClasse::bar(2);
    ?>
    Citation Envoyé par is_null Voir le message
    (...)Au sujet de ton code, tu t'en sors au plus mal !
    Heureusement, la lecture de la documentation sur la portee des variables repondra a toutes questions : http://fr2.php.net/variables.scope.

    J'ai un vague souvenir d'une citation amusante : read the manual before asking, or you'll be yelled on a second time !
    (Lisez le manual avant de demander, ca evitera qu'on vous gueule dessus une seconde fois)

    Bonne lecture !
    Sacré is_null, toujours aussi respectueux et toujours aussi diplômate.

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

Discussions similaires

  1. Problème d'appels d'une variable entre fonctions
    Par julien.nasser dans le forum MFC
    Réponses: 12
    Dernier message: 26/04/2006, 09h23
  2. Réponses: 4
    Dernier message: 16/02/2006, 10h40
  3. Réponses: 6
    Dernier message: 06/01/2006, 20h55
  4. "class" vector à indice variable et fonction membr
    Par icetechnik dans le forum C++
    Réponses: 14
    Dernier message: 25/11/2005, 23h46
  5. changer et afficher une variable en fonction d'un select
    Par psychoBob dans le forum Général JavaScript
    Réponses: 30
    Dernier message: 22/11/2005, 08h15

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