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 :

[POO] Indirect modification of overloaded property [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut [POO] Indirect modification of overloaded property
    Pour tenir compte du fait que ma classe SQL est de singleton, donc une seule instance..... je dois bien trouver une astuce pour le l'utilisateur B n'ait pas le code retour de A....

    Alors je me demandais si l'astuce suivante pourrait fonctionner mais PHP ne semble pas tout à fait d'accord.....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    			
    $this->idConn[$id] =                           <== Ligne 88
    mysql_connect($this->dbHost,$this->dbUser,$this->dbPass) ;
    if ($this->idConn[$id])
    {	// Une connexion est établie, on sélectionne notre BD
    	// --------------------------------------------------
    	return $this->idConn[$id] ;
    PHP râle en mme disant que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [11-Jun-2010 14:17:47] PHP Notice:  Indirect modification of overloaded property Db::$idConn has no effect in F:\WebSites\architecture\class\newDB.php on line 88
    [11-Jun-2010 14:17:47] PHP Fatal error:  Catching[connect error in File: F:\WebSites\architecture\class\newSkelt.php] - line: [55] in F:\WebSites\architecture\class\newSkelt.php on line 169
    Et pourtant j'ai un package qui utilise cette pratique...... mais le contzxte est un peu différent

    Merci à celui qui....
    Esteban

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    cette erreur s'affiche parce que l'attribut "idConn" n'existe pas mais est géré par "__set" et "__get"

    dans ce cas pour modifier cet attribut tu dois faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tabTemporaire = $this->idConn;
    $tabTemporaire[$id] = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
    $this->idConn = $tabTemporaire;
    GNAP !

  3. #3
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Variable indexée et code retour MYsql
    Bonjour,

    J'ai ici un script qui fonctionne et sur lesuel j'imspire et qui pratique cette faço de faire:

    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
       public function connect() 
       {		// connexion au serveur mysql
    			// --------------------------
    			if ($this->debug)
    				user_error("MYsql[connect]" , E_USER_NOTICE) ;
    			$this->idConn[$this->id] = mysql_connect($this->dbHost,$this->dbUser,$this->dbPass) ;
    			if ($this->idConn[$this->id])
    				{	// Une connexion est établie, on sélectionne notre BD
    					// --------------------------------------------------
    					$this->selectDB();
    	 			}//end if
    			else
    				{ 	// On lance une exception
    					throw new Exception("Couldn't connect to database") ;
    				}
    		
      }//end connect()
    La connexion n'est pas ncore établie pourtant !

    De même ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
      function open( $where , $table , $id='defaut' )
      {		global $in, $sql;
    
    		$this->where = $where ;
    		$this->table = $table ;     
    
    //    	user_error("mysql_connect(" . $this->hote . " , " . $this->user . " , " . $this->pass, E_USER_NOTICE) ;
    	
        	$in[$id] = mysql_connect($this->hote, $this->user, $this->pass) or die ($this->sqlinfo());
    		return($in[$id]) ;
      }
    Les seules différences que je peux remarquer est qu'il s'agit de PHP4 et que la propriété est déclarée global

    Je vais creuser, mais cela fonctionne.... alors ....pourquoi pas maintenant ?

    Bonne journée.

    Esteban
    Esteban

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/01/2013, 07h47
  2. [POO] Exception, modification du message d'erreur
    Par gege2061 dans le forum Langage
    Réponses: 1
    Dernier message: 30/08/2007, 16h52
  3. Réponses: 7
    Dernier message: 29/06/2007, 13h19
  4. Réponses: 1
    Dernier message: 05/03/2007, 12h53
  5. [POO] Erreur Trying to get property of non-object
    Par Niouts dans le forum Langage
    Réponses: 14
    Dernier message: 13/09/2006, 10h09

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