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 :

Souci tableau Class & Interface [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 Souci tableau Class & Interface
    Bonjour,

    J'essaye de résoudre un pb et pour se faire, je me suis écrit un petit test...
    Je ne comprends pas pkoi le tableau à une dimension = 0
    Le voici:

    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
    <?php
    		interface Validator
    		{	function validate() ;
    		}
     
    		class Little implements Validator
    		{	function __construct()
    			{}
    			function __destruct()
    			{}
     
    			function validate()
    			{	print("Validate Little <br>\n") ;
    				user_error("Validating LITTLE" , E_USER_NOTICE) ; }
    		}
     
    		class Greater implements Validator
    		{	function __construct()
    			{}
    			function __destruct()
    			{}
     
    			function validate()
    			{	print("Validate Greater <br>\n") ;
    				user_error("Validating GREATER" , E_USER_NOTICE) ; }
    			}
     
    		class main
    		{	private $tab ;
     
    			function __construct()
    			{	$tab[] = new Little () ;
    				$tab[] = new Greater() ;
    				print("Constructor <br>\n") ;
    			}
     
    			function destruct()
    			{	}
     
    			function validate()
    			{	print("Validate Main Count[".count($this->tab)."]<br>\n") ;
    				for($i = 0 ; $i < count($this->tab) ; $i++) 
    				{	print("loop[".$i."] br>\n") ;
    					if ($this->tab[$i] instanceof Validator)
    						$this->tab[$i]->validate() ;
    				}
    			}
    		}
     
    		$main = new Main() ;
    		$main->validate() ;
    ?>
    Rien dans le log PHP juste l'affichage...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Constructor 
    Validate Main Count[0]
    Le but final est d'essayer de implifier ce code (dans mon application principale...)

    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
    			function validate()
    			{	user_error("validate form[".$this->cntField."]" , E_USER_NOTICE) ;
     
    				if (!$this->cntFormFilled())
    					for ($i = 0 ; $i < $this->cntField ; $i++) :
    						if ($this->form[$i] instanceof DATE) 
    							$this->form[$i]->validate() ;
    						elseif ($this->form[$i] instanceof DECIMAL) 
    							$this->form[$i]->validate() ;
    						elseif ($this->form[$i] instanceof EMAIL) 
    							$this->form[$i]->validate() ;
    						elseif ($this->form[$i] instanceof INTEGER) 
    							$this->form[$i]->validate() ;
    						elseif ($this->form[$i] instanceof PASSWORD) 
    							$this->form[$i]->validate() ;
    						elseif ($this->form[$i] instanceof PHONE) 
    							$this->form[$i]->validate() ;
    						elseif ($this->form[$i] instanceof SELECT) 
    							$this->form[$i]->validate() ;
    						elseif ($this->form[$i] instanceof TEXT) 
    							$this->form[$i]->validate() ;
    						elseif ($this->form[$i] instanceof TEXTAREA) 
    							$this->form[$i]->validate() ;
    						else
    							{	$this->setMesssage(INVLCMD) ;
    							    throw new Exception("Unrecognized command") ;
    							}
    					endfor ;
    			}
    Mais j'aurai sans doute un autre souci à savoir que je n'ai si je peux écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class myClass Extends CheckForm interface Validator
    {      bla bla ........
     
    }
    Je ne crois pas mais n'ai vu nulle part parler de cela...

    Qui peut me faire avancer un peu ?
    Esteban

  2. #2
    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 Class & Interface
    Si cela fonctionne...

    Voici l'exemple final (et mon application tourne aussi....)

    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
    <?php
    		interface Validator
    		{	function validate() ;
    		}
     
    		class Little Extends Main implements Validator
    		{	function __construct()
    			{}
    			function __destruct()
    			{}
     
    			function validate()
    			{	print("Validate Little...... <br>\n") ;
    				user_error("Validating LITTLE" , E_USER_NOTICE) ; }
    		}
     
    		class Greater Extends Main implements Validator
    		{	function __construct()
    			{}
    			function __destruct()
    			{}
     
    			function validate()
    			{	print("Validate Greater...... <br>\n") ;
    				user_error("Validating GREATER......" , E_USER_NOTICE) ; }
    			}
     
    		class Main
    		{	private $tab ;
     
    			function __construct()
    			{	$this->tab[0] = new Little () ;
    				$this->tab[1] = new Greater() ;
    				print("Constructor [".count($this->tab)."]<br>\n") ;
     				$this->validate() ;
    			}
     
    			function destruct()
    			{	}
     
    			function validate()
    			{	for($i = 0 ; $i < count($this->tab) ; $i++) 
    				{	print("loop[".$i."] <br>\n") ;
    					if ($this->tab[$i] instanceof Validator)
    						$this->tab[$i]->validate() ;
    				}
    			}
    		}
     
    		$main = new Main() ;
    ?>
    Et les displays :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Constructor [2]
    loop[0] 
    Validate Little...... 
    loop[1] 
    Validate Greater....
    Ceci pourra peut être vous inspirer, en ce qui me concerne je clôture cette discussion mais reste ouvert à toutes suggestions.
    Esteban

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

Discussions similaires

  1. parcours d un tableau de l interface graphique
    Par natasha84 dans le forum MFC
    Réponses: 7
    Dernier message: 26/05/2006, 23h29
  2. Classe Abstraite, Interface....
    Par greatdonking dans le forum Langage
    Réponses: 6
    Dernier message: 07/11/2005, 16h19
  3. [Débutant(e)]Erreur 'class' or 'interface' expect
    Par chevy dans le forum Général Java
    Réponses: 7
    Dernier message: 30/03/2005, 08h13
  4. Tableau dans une interface idl
    Par Polochon2001 dans le forum CORBA
    Réponses: 2
    Dernier message: 14/05/2004, 09h44

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