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 :

PHP et Exception [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 PHP et Exception
    J'ai un souci, j'ai souhaité avoir ma routine d'affichage des plantages organisés via TRY - CATCH & THROW

    Voici un extrait:
    Le souci est dans le constucteur (en gras)

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    abstract class CustomException extends Exception implements IException
    {
        protected $message = 'Unknown exception';     // Exception message
        private   $string;                            // Unknown
        protected $code    = 0;                       // User-defined exception code
        protected $file;                              // Source filename of exception
        protected $line;                              // Source line of exception
        private   $trace;                             // Unknown
    
        public function __construct($message = null, $code = 0)
        {
            if (!$message) {
                throw new $this('Unknown '. get_class($this));
            }
            parent::__construct($message, $code);
        }
        
        public function __toString()
        {
            return get_class($this) . " '{$this->message}' in {$this->file}({$this->line})\n"
                                    . "{$this->getTraceAsString()}";
        }
    }
    
    class myException extends Skeleton
    {	private         $debug ;
            public static   $myExcept = NULL ;
    /**
    * Exception: Constructor
    *
    */	
           	public function __construct( $debug=false )
           	{	if (!self::$myExcept)                        (Ligne N° 1)
                
                        self::$myExcept = $this ;               (Ligne N° 2)
    
                    $this->debug = $debug ;
    		
    		if ($this->debug)
                        print("===> Exception Instanciated" . CRLF) ;
    				
                    return(self::$myExcept) ;
           	}
    /**
    * Exception: Destructor
    *
    */	
           	public function __destruct()
           	{	if ($this->debug)
    				print("===> Exception Ended" . CRLF) ;
           	}
    		
    /**
    * Exception: Execute (for test purpose) ;
    *
    */	
    		function execute()
    		{	//user_error("myException instanciated" , E_USER_NOTICE) ; 
    		}
    		
    /**
    * Exception: Display Exception
    *
    */	
       function display_exception($E)
       {	$T = $E->getTrace() ;
    Testé sous debugger (Netbeans), le code (la succession des instructions.... ) du IF (Ligne n°1 passe au dessus de la ligne N°2 et donc, je ne retourne jamais de valeur de mon constructeur et donc je me plante...
    J'ai pu reproduire ce "phénomène" à maintes reprises.
    A noter que la variable myExcept est bien PUBLIC STATIC !!!

    Je fais pourtant la même chose pour d'autres classes sans souci comme ici:

    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
    /**
    * Environment; Constructor
    *
    */	
           	public function __construct( $debug )
           	{	if (!self::$envInst)
                        {   self::$envInst = $this ;
    
                            $this->debug = $debug ;
    			if ($this->debug)
    			print("===> Environ Instanciated" . CRLF) ;
                        }
                    return(self::$envInst) ;
            }
    Merci à celui qui pourra m'expliquer

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Fais un var_dump() de !self::$myExcept avant ta condition pour controler.

  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 Incident PHP ?
    Je le fais de suite mais j'ai utilisé un dbg pour m'en assurer......
    Et sous dbg, la ligne était sautée.... en exécution "normale", je n'ai jamais constaté ce cas.... mais je vais faire ton test !

    Dsl....

  4. #4
    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 Bizzare vous avec dit bizarre....
    Voici le constructeur :

    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
    class myException extends Skeleton
    {	private         $debug ;
            public static   $myExcept  ;
    /**
    * Exception: Constructor
    *
    */	
           	public function __construct( $debug=false )
           	{	if (!self::$myExcept)
                	self::$myExcept = $this ;
    			var_dump(self::$myExcept) ;
                $this->debug = $debug ;
     
    			if ($this->debug)
                    print("===> Exception Instanciated" . CRLF) ;
     
    			return(self::$myExcept) ;
           	}
    et voici ton var_dump:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    object(myException)[3]
      private 'debug' => null
      private 'PTR_session' (Skeleton) => null
      private 'debug' (Skeleton) => null
      private 'message' (Skeleton) => null
      private 'TBL_screen' (Skeleton) => null
      private 'screen' (Skeleton) => null
      private 'title' (Skeleton) => null
      private 'subtitle' (Skeleton) => null
      private 'form' (Skeleton) => null
      private 'submenu' (Skeleton) => null
      private 'klimsg' (Skeleton) => null
      private 'mustmber' (Skeleton) => null
      private 'site' (Skeleton) => null
    Toutes ces variables, je les connais, celle en gras font partie de la définition d'un écran.... mais je ne vois pas la variable self::$myExcept

    Puis-je poser une question ?
    C quoi le 3 dans object(myException)[3] ?

    Merci @ de suite

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le var_dump() est à faire avant le if, sinon ca n'a pas de sens.

  6. #6
    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 PHP Var_dump
    J(obtiens NULL , vous en déduisez quoi ?

  7. #7
    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 J'en ai encor eune autre de la sorte....$
    Les voix de l'informatique peuvent parfois rester impénétrable jusqu'au moment ou qlqu'un vous apporte un sonothone ou un porte-voix....

    Voici un autre cas; j'initialise ma page ici, note la variable debug, c'est elle qui au centre de la polémique....

    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
    /**
    * Exécution: chaque oage aura ce même style d'instruction
    *
    */	
    $obj = new setScreen($debug=false) ;
    $obj->__setParam(SCREEN   , "index"                               									) ;
    $obj->__setParam(TITLE    , "Bienvenue sur le site de " . $site . "!" 								) ;
    $obj->__setParam(SUBTITLE , "Les non-membres dsireux de nous contacter sont pris de le faire"		) ;
    $obj->__setParam(FORM     , "index" 																) ;
    $obj->__setParam(MENU 	  , "index"																	) ;
    $obj->__setParam(SUBMENU  , "index"																	) ;
    $obj->__setParam(KLIMSG   ," Bienvenue sur le site de " . $site . "!"								) ; 
    $obj->__setParam(MUSTMBER , 0																		) ;
    $obj->execute() ;
    ?>
    L'exécution après qlques manipulations nous amène ici:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    /**
    * Constructor
    *
    */	
    	function __construct($debug=false)
    	{	$this->debug       = $debug        ;
    				
    		if ($this->debug)
    			print("+++++++++++construct[setScreen] starting" . CRLF) ;
    		$this->Max = count($this->const) ; 
    			
    		try {	
    				
    				if ($this->debug)
    					print("+++++++++++construct[setScreen] started" . CRLF) ;  
    					
    bla bla bla....
    ===========
    
    /**
    * End of Iterator methods
    *
    */	
    	function execute()
    	{	if ($this->debug)
    			print("+++++++++++executing[setScreen] started" . CRLF) ;
    
    		if ($this->debug)
    			{	foreach ($this->valid as $key => $value)
    				{	printf("%10s %18s %10s %10s %10s",  "Key["       .$key           ."]" , 
    " => Value[" .$value[NAME]   ."]" ,
    " ==> Must[" .$value[MUST]   ."]" , 
    " ==> Set["  .$value[SET]    ."]" ,
    " ==> Value[".$value[INIT]   ."]". CRLF) ;
    				}
    			}	
    					
    bla bla bla....
    ===========
    
    /**
    * Si Ok, on appelle le skeleton
    *
    */	
    			{	if ($this->debug)
    					{	print("Going to Skeleton ......" . CRLF) ;	
    						user_error("Going to Skeleton...." , E_USER_NOTICE) ;
    //						print_r($this->TBL_screen) ; echo CRLF ;
    					}
    
      				$this->MasterInst = Skeleton::getInstance( false /* No session */ , $this->TBL_screen, $debug=FALSE ) ;
     				$this->MasterInst->execute() ;
    			}
    	}
    Note les lignes soulignées qui dépendent toutes de $this->debug, tu vas les retrouver ici !

    Et pourtant voici ce que m'affiche l'exécution:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    +++++++++++construct[setScreen] starting
    +++++++++++construct[setScreen] started
    +++++++++++executing[setScreen] started
    Key[0] => Value[SCREEN] ==> Must[1] ==> Set[1] ==> Value[disconnect]
    Key[1] => Value[TITLE] ==> Must[1] ==> Set[1] ==> Value[Vous allez vous déconnecter de [Jecrapahute], @bientôt]
    Key[2] => Value[SUBTITLE] ==> Must[] ==> Set[1] ==> Value[Les non-membres désireux de nous contacter sont priés de le faire]
    Key[3] => Value[FORM] ==> Must[1] ==> Set[1] ==> Value[disconnect]
    Key[4] => Value[MENU] ==> Must[1] ==> Set[1] ==> Value[index]
    Key[5] => Value[SUBMENU] ==> Must[] ==> Set[1] ==> Value[disconnect]
    Key[6] => Value[KLIMSG] ==> Must[1] ==> Set[1] ==> Value[Vous allez vous déconnecter de [Jecrapahute], @bientôt]
    Key[7] => Value[MUSTMBER] ==> Must[1] ==> Set[1] ==> Value[0]
    Key[8] => Value[bottom] ==> Must[] ==> Set[] ==> Value[]
    Going to Skeleton ......

    Je viens de faire l'éxecution sous Eclipse en rajoutant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($debug, $this->debug) ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    NULL bool(false) 
    
    A jeter son clavier par la fenêtre....     :?:?
    
    
    Array ( [SCREEN] => index [TITLE] => Bienvenue sur le site de [Jecrapahute]! [SUBTITLE] => Les non-membres d�sireux de nous contacter sont pri�s de le faire [FORM] => index [MENU] => index [SUBMENU] => index [KLIMSG] => Bienvenue sur le site de [Jecrapahute]! [MUSTMBER] => 0 ) Array ( [SCREEN] => index [TITLE] => Bienvenue sur le site de [Jecrapahute]! [SUBTITLE] => Les non-membres d�sireux de nous contacter sont pri�s de le faire [FORM] => index [MENU] => index [SUBMENU] => index [KLIMSG] => Bienvenue sur le site de [Jecrapahute]! [MUSTMBER] => 0 )
    J'en conclus qu"il a un problème avec la variable $this->debug mais celui-là, je ne l'ai pas encore trouvé !

    Merci à celui qui mettre la main dessus

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Hello,

    J'ai un peu lu en travers mais ceci m'a sauté aux yeux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class myException extends Skeleton
    Ta classe Skeleton étend Exception ?

    Les exceptions doivent systématiquement dériver de la classe Exception, ou d'une classe dérivant elle même d'Exception.

  9. #9
    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 Exception
    Tu n'as pas lu de travers mais tu n'avais pas tout....

    J'ai

    class myException extends Skeleton car

    myException est bien un enfant de Skeleton et je n'appelle pas (que je sache l'interface exception)

    Voici d'ailleurs le code:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    class myException extends Skeleton
    {	private         $debug ; 
        public static   $myExcept  ;
    /**
    * Exception: Constructor
    *
    */	
           	public function __construct( $debug=false )
           	{// var_dump(self::$myExcept) ;
                if (!self::$myExcept)
                	self::$myExcept = $this ;
    			$this->debug = $debug ;
    		
    			if ($this->debug)
                    print("===> Exception Instanciated" . CRLF) ;
    				
    			return(self::$myExcept) ;
           	}
    /**
    * Exception: Destructor
    *
    */	
           	public function __destruct()
           	{	if ($this->debug)
    				print("===> Exception Ended" . CRLF) ;
           	}
    		
    /**
    * Exception: Execute (for test purpose) ;
    *
    */	
    		function execute()
    		{	//user_error("myException instanciated" , E_USER_NOTICE) ; 
    		}
    		
    /**
    * Exception: Display Exception
    *
    */	
       function display_exception($E)
       {	$T = $E->getTrace() ; 
    	//	======================================================================
    		print("dbInst error diagnostic" .  "<br>\n") ;
    		print("================" .  "<br>\n") ;
    		print("Message: " . $E->getMessage() . " - File: " . $E->getFile() . " - Line: " . $E->getLine() . "<br>\n") ;
    		print("<br>\n") ;
    		print("Trace: " . "<br>\n") ;
    		print("------ " . "<br>\n") ;
    		print( "   => File               : " . $T[0]["file"]     . "<br>\n") ;
    		print( "   => calling instruction: " . $T[0]["line"]     . "<br>\n") ;
     		print( "   => error class        : " . $T[0]["class"]    . "<br>\n") ;
    		print( "   => error function     : " . $T[0]["function"] . "<br>\n") ;
    	//	======================================================================
    		user_error("Catching[connect error in File: " . $T[0]["file"] . "] - line: [" . $T[0]["line"] . "]" , E_USER_ERROR) ;  
    	//	======================================================================
    	}
    
    }	
    ?>
    Mais j'ai quand même un souci dans le constructeur qiue j'ai détecté dans Eclipse et non Netbeans.

    La ligne en gras n'est pas exécutée (sous dbg, je reprécise !)

    Merci pour tes remarques, cela fait tjs réfléchir.....

    Bon WE

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Ce n'est pas une réelle exception donc ?
    Pas de try/throw/catch ?

    Auquel cas, conseil d'ami, évite une dénomination qui puisse faire penser aux exceptions.

    Sinon ceci va pas non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $obj = new setScreen($debug=false) ;
    plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $obj = new setScreen( false ) ;
    Quant à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self::$myExcept = $this ;
    Je suis pas très convaincu. Même dans le cas où cela fonctionnerait (ce dont je ne suis pas certain) c'est un peu tarabiscoté comme manière de faire. Voir casse-gueule.

  11. #11
    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 myExeption
    Non pad de try - catch & thrown, ils sont dans le skeleton.....

    Merci pour tes remarques.

    Mais j'aime ne pas mourrir con

    Pkoi ceci ne va pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $obj = new setScreen($debug=false) ;
    Alors que la définition de la classe est:
    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
     
    class setScreen extends myIterator
    {	private $i , $Max ;
    // ---------------------------------------------------------------------------------------------------------------------------------------------------------- //
    protected $TBL_screen = array() ;
    private   $const = array(	SCREEN 	,	TITLE	,	SUBTITLE ,	FORM 	,	MENU	, 	SUBMENU	,	KLIMSG	, 	MUSTMBER  , BOTTOM  ) ;//      == 9
    private   $must  = array(   True    ,  	True    ,  	False    ,  True    ,   True    ,   False   ,   True 	,   True 	  , false	) ;
    private   $Ok = array() ;
    // ---------------------------------------------------------------------------------------------------------------------------------------------------------- //
    /**
    * Constructor
    *
    */	
    	function __construct($debug=false)
    	{	$this->debug       = $debug        ;
    Pour le $this, je l'ai vu dans quelques livres et même que cela aurait un rapport avec Singleton que je croyais être un pattern....
    Mais j'instancie bcp de classe selon ce shéma:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /******************************************************************************************************************************************************
    * Procédure d'intanciation de la classe[SKELETON] 
    *
    */	
    function getInstance($PTR_session, $TBL_screen, $debug=false) 
    {	if (self::$Master == NULL)
    		if (self::$Master = new Skeleton($PTR_session, $TBL_screen, $debug=false) )
    			if (self::$Master->debug)
    			       user_error("Constructor Skeleton OK !" , E_USER_NOTICE) ;
    			return(self::$Master) ;
    		}
    Je viens de me rendre compte que le this n'est pas utilisé ici, enfin, je laisse...

    Merci encore, et malgré toutes les précautions que j'ai prises, je me casse la gueule en mySQL à cause d'accents....
    Si tu as une solution.... merci d'avance.

  12. #12
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if (self::$Master = new Skeleton($PTR_session, $TBL_screen, $debug=false) )
    Cette condition risque de toujours être vrai.

    Personnelement, je dirais qu'il y a aussi un problème dans la ligne suivante :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    abstract class CustomException extends Exception implements IException

    Enfin, pour bien comprendre ton problème, il serait plus simple que tu expliques précisément ce que tu souhaites faire.

    Enfin, j'ai vu que tu avais des méthode __setParams. Pourquoi le double underscore ?? (et je déconseille cette syntaxe pour une méthode public) C'est plutôt réservé aux méthodes magiques....


    Cordialement,
    Patouche

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Hmmpf, ça fait une paie que j'ai un peu laché la rampe avec PHP :\
    Pkoi ceci ne va pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $obj = new setScreen($debug=false) ;
    On crée un objet dans le même esprit qu'un appel à une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function maFonction( $var ){
        ...
    }
    // appel :
    maFonction( 'quelque chose' );
    Ce que tu fais là, ça fonctionne, mais ce qui se passe lorsque tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maFonction( $variable = 'quelque chose' );
    C'est que tu crées une variable au niveau global de ton script (niveau global = tout ce qui n'est pas dans la définition des fonctions ou des objets, la partie procédurale en fait) qui est ensuite passée en paramètre à ta fonction (ou dans ton cas, au constructeur de ton objet). Ça ne pose pas de soucis de fonctionnement, mais ça crée une variable inutile qui traine dans ton script. Rien de grave, mais éviter l'inutile c'est une petite optimisation qui coute pas cher.

    Quant à la partie self::$var = $this, j'avoue, je suis un peu rouillé. Mais je te renvoie à ma signature pour savoir ce que j'en pense (avis qui n'engage que moi)

  14. #14
    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 réponse à ta question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $obj = new setScreen($debug=false) ;
    $debug est une valeur par défaut de l'appel à cette classe, je préfère l'écrire ainsi pour m'en souvenir......

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

Discussions similaires

  1. Httpservice et Exception PHP
    Par piopium dans le forum Flex
    Réponses: 2
    Dernier message: 07/09/2008, 10h09
  2. [AJAX] Ajax et PHP : gestion des exceptions
    Par sliderman dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/05/2008, 13h31
  3. [Exception PHP] Interception Erreur WebServices
    Par yokoPim dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2006, 15h46
  4. récupérer les erreurs php dans des exceptions
    Par jeanvincent dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2005, 16h26

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