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 :

Classes et sous classes [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    Par défaut Classes et sous classes
    Je ne comprends pkoi je ne peux avec 3 classes grandp-père =père => enfant

    Voici mon code (ou extrait)

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    require_once $_SERVER['DOCUMENT_ROOT'] . "/class/define/equate.php";  
    require_once $_SERVER['DOCUMENT_ROOT'] . "/class/newSkelt.php";  
    require_once $_SERVER['DOCUMENT_ROOT'] . "/class/newMsg.php";  
    require_once $_SERVER['DOCUMENT_ROOT'] . "/class/newScreen.php";  
    require_once $_SERVER['DOCUMENT_ROOT'] . "/class/Exception.php";  
    
    //
    // 	Class: ActualizeScreen
    //	======================
    class ActualizeScreen extends UpdateScreen 
    {   protected       $TBL_screen , $row,  $screen,  $title,  $subtitle ,  $form,  $menu,  $submenu,  $klimsg,  $mustmber,  $bottom ,  $site;
    	private 		$debug ;
    	public static 	$actualizeScreen ;
    /**
    *   ActualizeScreen Constructor
    *
    */	
    	function __construct($TBL_screen, $row, $debug)	
    	{	if (!self::$actualizeScreen)
                self::$actualizeScreen     = $this ;
    
            $this->debug        = $debug      ;
            $this->TBL_screen   = $TBL_screen ;
            $this->row          = $row        ;
            if ($this->debug)
               {	user_error("Construct UPDSCREEN[OK]" , E_USER_NOTICE) ;
    				print "=======================> Construct UPDSCREEN[OK]" . "<br>\n" ;
    //				print_r($this->TBL_screen) ;
               }
             return(self::$actualizeScreen) ;
    	}
    
    /**
    *   ActualizeScreen Destructor
    *
    */	
    	function __destruct()
    	{}
    	
    /**
    *   actualizeScreen
    *
    */	
    
    }
    
    --------------------------------------------------------------------------------------------------------------------------- //	
    class UpdateScreen extends Screen
    {   protected       $TBL_screen , $row,  $screen,  $title,  $subtitle ,  $form,  $menu,  $submenu,  $klimsg,  $mustmber,  $bottom ,  $site;
    	private 		$staius, $debug ;
    	public static 	$updtScrnInst, $actualizeScreen ;
    
    /**
    *   Updcreen Constructor
    *
    */	
    	function __construct($dbInst,$TBL_screen, $debug)	
    	{	if (!self::$updtScrnInst)
                self::$updtScrnInst     = $this ;
    
            $this->debug        = $debug   ;
            $this->TBL_screen   = $TBL_screen ;
            $this->dbInst       = $dbInst ;
            if ($this->debug)
               {	user_error("Construct UPDSCREEN[OK]" , E_USER_NOTICE) ;
    				print "=======================> Construct UPDSCREEN[OK]" . "<br>\n" ;
    //				print_r($this->TBL_screen) ;
               }
             return(self::$updtScrnInst) ;
    	}
    
    /------------------------------------------------------------------------------------------------------------------------------- //	
    class Screen extends Skeleton
    {   protected       $TBL_screen , $row,  $screen,  $title,  $subtitle,  $form,  $menu,  $submenu,  $klimsg,  $mustmber,  $bottom ,  $site;
    	public  static  $scrnInst ;
    
    /**
    * 	Instanciation de la classe Screen
    *   ---------------------------------
    */
    	function __construct($dbInst, $TBL_screen, $debug=false)	
        {   if (!self::$scrnInst)
               self::$scrnInst   = $this;
    
            $this->dbInst       = $dbInst ;
            $this->TBL_screen 	= $TBL_screen ;
            $this->debug  		= $debug      ;
    
            if ($this->debug)
                {   user_error("Construct SCREEN[OK]" , E_USER_NOTICE) ;
                    print_r($this->TBL_screen) ; echo CRLF ;
                    print "================> Construct SCREEN[OK]" . "<br>\n" ;
                }
    
            return(self::$scrnInst) ;
    	}
    
    /**
    *   function __destruct()
    *
    */	
    	function __destruct( )	
    	{	if ($this->debug)
    			{	user_error("Destruct SCREEN" , E_USER_NOTICE) ; 	
    				print "================> SCREEN Ended" . "<br>\n" ;
    			}
    	}
    /**
    *   function Execute()
    *
    */	
    	function Execute()
    	{	if ($this->debug)
    			{	user_error("SCREEN[Execute]" , E_USER_NOTICE) ; 	
    				print "================> SCREEN Executing" . "<br>\n" ;
    			}
    //
     		try {
     
     				$this->updtScrnInst = new updateScreen($this->dbInst, $this->TBL_screen, $this->debug) ;
    	  }
    // =============================================================================================================================== //
    //
    // 	End of class: Screen
    //	====================
    }
    ?>
    Je peux avoir Skeleton => Screen => UpdateScreen

    Mais pas y ajouter => ActualizeScreen

    Voici le log.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [23-Jul-2010 15:46:40] PHP Fatal error:  Class 'UpdateScreen' not found in F:\WebSites\jecrapahute\class\newScreen.php on line 19
    Cela doit être gros comme une maison, mais je ne vois pas...

    Merci à vous qui me mettrait sur la bonne voie.....

  2. #2
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Bonjour,

    Alors juste comme ça tu n'as pas l'impression de déclarer dans le mauvais ordre tes class ?

    Tu commences par : "class ActualizeScreen extends UpdateScreen"

    Alors que UpdateScreen n'est pas encore définie. Donc forcément il râle

    Il va te faire la même remarque pour Screen d'ailleurs... Organise bien ton code et cela sera corrigé.

    Cordialement,

  3. #3
    Membre éclairé 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
    Par défaut Organisation code - classes
    Merci pour ta réponse.

    Actellement ActualizeScreen est devenu méthode de UpdScreen, donc deviens hors scoop (en principe)
    Je ne suis pas sur de bien te comprendre....
    Skelet appelle Screen qui - pour moi - est instancié convenablement
    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
     
    	function __construct($dbInst, $TBL_screen, $debug=false)	
        {   if (!self::$scrnInst)
               self::$scrnInst   = $this;
     
            $this->dbInst       = $dbInst ;
            $this->TBL_screen 	= $TBL_screen ;
            $this->debug  		= $debug      ;
     
            if ($this->debug)
                {   user_error("Construct SCREEN[OK]" , E_USER_NOTICE) ;
                    print_r($this->TBL_screen) ; echo CRLF ;
                    print "================> Construct SCREEN[OK]" . "<br>\n" ;
                }
     
            return(self::$scrnInst) ;
    	}
    après le skelet appelle la méthode Execute de Screen qui elle définit UpdScreen de la même façon et est appelée de la même facon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	function Execute()
    	{	if ($this->debug)
    			{	user_error("SCREEN[Execute]" , E_USER_NOTICE) ; 	
    				print "================> SCREEN Executing" . "<br>\n" ;
    			}
    //
     		try {
     
     				$this->updtScrnInst = new UpdateScreen($this->dbInst, $this->TBL_screen, $this->debug) ;
     
    				$z =$this->updtScrnInst->execute() ;
    				echo "Scr1 =====>" ; print_r($this->row) ; 						 
    				echo "Scr2 =====>" ; print_r($this->TBL_screen)
    ;


    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
    class UpdateScreen extends Screen
    {	private 		$status, $debug ;
    	public static 	$updtScrnInst, $actualizeScreen ;
     
    /**
    *   Updcreen Constructor
    *
    */	
    	function __construct($dbInst,$TBL_screen, $debug)	
    	{	if (!self::$updtScrnInst)
                self::$updtScrnInst     = $this ;
     
            $this->debug        = $debug   ;
            $this->TBL_screen   = $TBL_screen ;
            $this->dbInst       = $dbInst ;
            if ($this->debug)
               {	user_error("Construct UPDSCREEN[OK]" , E_USER_NOTICE) ;
    				print "=======================> Construct UPDSCREEN[OK]" . "<br>\n" ;
    //				print_r($this->TBL_screen) ;
               }
             return(self::$updtScrnInst) ;
    	}
     
    /**
    *   Updcreen Executor
    *
    */	
    	function execute()
    	{	if ($this->debug)
    			{	print(">>>>>>>>>>>>>>>>updScreen EXECUTE<<<<<<<<<<<<<<<<<<") ; echo CRLF ;
     
    				foreach($this->TBL_screen as $key => $val)
    				{	print($key . " => " . $val . CRLF) ; }
     
    			}

    Screen est appelé pour chaque page de mon site et donc - pour moi - il vient en 1er lieu... c'est lui vérifié les coordonnées de la page visite et l'autorisation ou non du visiteur.
    Si les params de la page ont été modifiés par un éditeur, c'est mis à jour ou inséré en DB mais vérifié par UpdtScreen....

    Oui, je pourrais fusionner les 2 classes mais c con, je crois !!!
    Ne peux-tu me mettre sur la voix sans me donner la solution ?

    Je ne dis pas qu'il n'y a rien, je dis que je ne vois pas comment faire autrement.....

    Merci
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/12/2008, 20h51
  2. Classe et sous-classe : Visibilité
    Par JohnNC dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2008, 13h38
  3. [Reflection] Obtenir les sous-classes d'une classe
    Par El Saigneur dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 11/06/2007, 07h14
  4. [POO] Organiser ses classes (en sous classes)
    Par alexfrere dans le forum Langage
    Réponses: 5
    Dernier message: 20/03/2007, 13h07
  5. Super classes et sous-classes/Méthodes
    Par smag dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 23h10

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