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 :

Qu est PERE de QUI ?


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 Qu est PERE de QUI ?
    Je croyais avoir pigé... FILS - PARENT
    J'introduis un niveau intermédiaire et passe de PETIT-FILS à GRAND-PERE et là, je décroche...

    Le petit-fils
    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 html {
    	private $class_tbdesigner;
    	private $class_td;
    	private $class_tr;
    	private $class_table;
    	private $debug;
     
    /**
    * 	__constructor
    *
    */	
    	function __construct($css,$debug=False) {
     
    		print("__construct[html]". CRLF) ;
    Le père...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class cells extends html{
    /**
    * 	__constructor
    *
    */	
    	function __contruct($css,$debug=FALSE)	{
     
    		parent::__construct($css,$debug) ;
    		print("__construct[cells]" . CRLF) ;
    	}
    Le grand-père....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    */	
    class tableDesigner extends cells{
    	private $data, $rowCnt, $colCnt;
     
    	function __construct(	$colCnt,   $css = array(), $debug=FALSE	)
    	{	$this->rowCnt 	= 0 ;
    		$this->colCnt	= $colCnt ;
    		$this->data		= NULL ;
     
    		parent::__construct($css,$debug) ;
     
    		print("__construct[tabledesigner]". CRLF) ;
    	}
    Ce qui affiche à l'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    __construct[html]
    __construct[tabledesigner]
    ...
    Sans passer par la classe Cells comme attendu...
    J'ai encore raté une marche !

    J'ai donc introduit le concept de cells comme ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $tb = new tableDesigner(	4, $css
    					   );
     
    $tb->addRow(	 array(	new cells("<img src=\"image/new.gif\" border=0 alt=\"NEW1\" title=\"NEW1\" />")
    /*	,
    						"Row1 Col1" ,
    						"Row1 Col2" ,
    						"Row1 Col3"
    */
    					) 
    			) ;
     /*
    Ce qui me donne comme message PHP!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [23-Aug-2012 19:09:37] PHP Catchable fatal error:  Object of class cells could not be converted to string in F:\WebSites\skelt\class\tableDesigner.php on line 61
    
    [23-Aug-2012 19:09:37] PHP Stack trace:
    
    [23-Aug-2012 19:09:37] PHP   1. {main}() F:\WebSites\skelt\index.php:0
    
    [23-Aug-2012 19:09:37] PHP   2. tableDesigner->printTable() F:\WebSites\skelt\index.php:53
    La ligne 61 est en gras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	function printTable($return=FALSE)	{
    		$tb = "<table".$this->getClassTag("table").">\n";
    			
    		foreach ($this->data as $key => $value) {
    			$tb .= "<tr".$this->getClassTag("tr").">\n";
    			foreach($value as $css => $cssvalue)	{
    ==>61			$tb .= "<td".$this->getClassTag("td").">".$cssvalue."</td>\n";
    Je comprends d'autant moins que la méthode getClassTag qui - je suppose - force l'erreur PHP est déjà utilisée 2 lignes + haut...

    Où celle-ci se trouve ratée ?
    Un p'tit coup de main, svp
    Ou ai-je encore tout inversé ?
    Je sais que Cells n'a aucune méthode pour le moment mais j'ose croire que ce n'est la raison, PHP passe d'abord pas le __construct avant celles-ci..

    Merci à vous tous...

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Ou ai-je encore tout inversé ?
    Tu as tout inversé.
    Fait un diagramme de classe si tu n'arrive pas à saisir la notion de parent / enfant.

    La classe mère : HTML
    La classe fille : Cell
    La classe petite fille : tableDesigner

    C'est pourtant pas compliqué , extends = héritage , quand tu hérites c'est que tu es enfant. La classe qui extend rien est donc la parente.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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 Qui est le FILS et qui est le PERE
    Je ne te suis pas Grunk
    Dans mon exemple précédent... jugé ok il y a quelques jours, j'avais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TBdesigner extends html
    Et rien pour html fils de TBdesignsd

    extrait de cet 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    class html {
    	private $class_tbdesigner;
    	private $class_td;
    	private $class_tr;
    	private $class_table;
     
    	function __construct($css) {
    		print("hrml __construct" . CRLF) ;
     
    		$this->class_tbdesigner 	= $css[0] ; // $class_tbdesigner;
    		$this->class_td 			= $css[1] ; // $class_td;
    		$this->class_tr 			= $css[2] ; // $class_tr;
    		$this->class_table 			= $css[3] ; // $class_table;
    	}
     
    	function getClassTag($node)	{
    //		$this->getHtmlTag($node) ;
     
     
    ......
    	}	
     
    }
     
    class tableDesigner extends html{
    	private $tbdesigner;
    	private $data;
    	private $id_container;
    	private $table_title;
    	private $id_title;
     
    	private $html ;
     
    	function __construct(	$tbdesigner,
    							$data,
    							$id_container		= "",
    							$id_title			= "Click Me to toggle",
    							$table_title		= "Table Title",
    							$css 				= array("","","","")
    						  )
    De la, je me suis fait un croquis comme tu le conseilles

    Et j"ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TBDesigner extends Cells
     
    Cells extends html
     
    Html rien...
    Je ne pige plus Grunk

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Dans mon exemple précédent... jugé ok il y a quelques jours, j'avais TBdesigner extends html
    Oui et dans ce cas précis je t'avais dis que HTML était la mère et TBDesigner la fille puisque elle hérite des propriétés de HTML.

    Je t'avoue que je sais pas comment expliquer ça plus clairement

    A extends B =
    A enfant de B =
    A hérite des propriétés de son parent B =
    B est le PERE/MERE/PARENT

    Pour simplifier encore plus :
    Enfant extends Parent et surtout pas Parent extends Enfant
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    class cells extends html
    cela peut se dire cells spécialise html comme une fille/un fils hérite des gènes de sa mère/son père et ajoute ses spécificites
    Ici donc html est parent, cells fils/fille.

    Il est son père/sa mère plus sa propre personnalité

    P.S. En POO on parle de mère/fille car ce sont des classes (féminin)

  6. #6
    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 Qui est le FILS et qui est le PERE
    Bon on recommence....

    A extends B
    A enfant de B
    Ok ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TBDesigner extends HTML
    TB........... enfants d'HTML
    TB... hérite des propriété d'HTML
    HTML est le parent de TB....
    Je crois que jusque là, nous sommes d'accord !

    J’introduis le concept de Cells entre TB er HTML

    donc TB extends CELLS au lieu d'HTML
    et CELLS extends HTML
    et HTML

    Cela voudrait dire que

    TB est enfant de CELLS et PETIT-FILS d'HTML
    puisque
    CELLS est enfant d'HTML
    ....... est fils de TB

    HTML est grand-père de TB
    CELLS est père de TB et fils d'HTML

    Je crois avoir été au bout du raisonnement là et de la généralisation faite après le cas à 2 niveaux...
    Maintenant par rapport au code proprement-dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class html {
    	private $class_tbdesigner;
    	private $class_td;
    	private $class_tr;
    	private $class_table;
    	private $debug;
    Html n'étends rien, donc est père, grand-père de ces enfants
    et...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class cells extends html{
    /**
    * 	__constructor
    *
    */	
    	function __contruct($css,$debug=FALSE)	{
     
    		parent::__construct($css,$debug) ;
    		print("__construct[cells]" . CRLF) ;
    	}
    }
    Cells étend HTML donc est fils d'Html, hérite donc de son père

    Et enfin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class tableDesigner extends cells{
    	private $data, $rowCnt, $colCnt;
     
    	function __construct(	$colCnt,   $css = array(), $debug=FALSE	)
    	{	$this->rowCnt 	= 0 ;
    		$this->colCnt	= $colCnt ;
    		$this->data		= NULL ;
     
    		parent::__construct($css,$debug) ;
     
    		print("__construct[tabledesigner]". CRLF) ;
    	}
    TB extends Cells, TB est fils de Cells, donc hérite des propriétés de son père CELLS...

    Je crois avoir été au bout du raisonnement sur papier et à l'écran...
    Je pense avoir généralisé de 2 à 3 niveaux sans avoir fait d'erreur...
    Mais il y a erreur puisque PHP râle...
    Désolé Grunk.... merci encore...

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    ETVigan dit :

    donc TB extends CELLS au lieu d'HTML
    et CELLS extends HTML
    et HTML

    Cela voudrait dire que

    TB est enfant de CELLS et PETIT-FILS d'HTML
    puisque
    CELLS est enfant d'HTML
    ....... est fils de TB

    HTML est grand-père de TB
    CELLS est père de TB et fils d'HTML


    Je vais rester sur de la POO classique et pas propre à PHP où je ne connais pas la manière dont est appréhendée l'héritage multiple, mais ici dans ton arbre,

    si

    TB extends CELLS au lieu d'HTML
    et CELLS extends HTML
    dailleurs tu ne montre pas de
    au lieu d'HTML
    mais

    avec HTML
    alors TB et CELLS sont soeurs
    rien ne permet de dire quer l'une st la mère de l'autre

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/07/2006, 13h52
  2. Réponses: 11
    Dernier message: 09/05/2006, 09h34
  3. Quelle est cette commande qui plante linux?
    Par 123quatre dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 18/02/2006, 13h48
  4. Réponses: 7
    Dernier message: 30/11/2005, 15h15
  5. Champ vide = Liste Invisible mais c'est le SF qui est invisi
    Par samlepiratepaddy dans le forum Access
    Réponses: 13
    Dernier message: 29/09/2005, 15h45

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