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

  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 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 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    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.

  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 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 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    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

  5. #5
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    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
    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 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
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    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

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Citation Envoyé par philippe6 Voir le message
    alors TB et CELLS sont soeurs
    rien ne permet de dire quer l'une st la mère de l'autre
    Pas d'accord , TB et Cell seraient soeur si elles héritaient toutes les deux de HTML directement.

    Ici TB hérite de Cell qui hérite elle même de HTML. Donc TB se retrouve avec les propriété de Cell + celle de HTML. Elle sont de la même famille (HTML) mais pas de la même génération (une profondeur de plus pour TB)


    @ETVigan : il faut nous montrer le code de getClassTag()

  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 Qui est le FILS et qui est le PERE
    Pige pas ton raisonnement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TB & CELLS sont soeurs....
    Merci de tes précisions...

  10. #10
    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 Qui est le FILS et qui est le PERE
    Merci Grunk... de recadrer par rapport au post précédent... et des 2 soeurs
    Voici la portion de code demande

    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
     
    /**
    * 	getClassTag
    *
    */	
    	function getClassTag($node)	{
     
    		switch($node)	{
    			case DESIGN	:	return(	$this->class_td!="" ? " class=\"".$this->class_tbdesigner."\"" :	"") ;
    							break;
     
    			case TD		:	return(	$this->class_td!="" ? " class=\"".$this->class_td."\"" :	"") ;
    							break;
     
    			case TR	 	:	return(	$this->class_td!="" ? " class=\"".$this->class_tr."\"" :	"") ;
    							break;
     
    			case TABLE	:	return(	$this->class_td!="" ? " class=\"".$this->class_table."\"" :	"") ;
    							break;
     
    			default		: 	user_error("getClassTag[".$node."] undefined !" , E_USER_NOTICE) ;
    							break;
    		}
    	}	
    /**
    * 	END: hrml
    *
    */
    Merci à toi !

  11. #11
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Ok, j'ai été maladroit, j'ai lu dans #3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TBdesigner extends html
    TBDesigner extends Cells
    et je n'ai pas pris garde au contexte

    désolé

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    dans le case TD de getClassTag() que donne un var_dump($this->class_td) ?

  13. #13
    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 Qui est le FILS et qui est le PERE
    Grunk,

    Réponse attendue;..

    voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    __construct[html]
    __construct[tabledesigner]
    __construct[html]
    cnt[1]
    cnt[2]
    cnt[1]
    string(2) "td"
    avec

    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
    	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)	{
    				var_dump($this->getClassTag("td").CRLF) ;
    62==>				$tb .= "<td".$this->getClassTag("td").">".$cssvalue."</td>\n";
    			}
    			$tb .= "</tr>\n";
    		}
    		$tb .= "</table>\n";
    		
    		$tb .= "\n";
    		
    		if	($return)
    			return $tb;
    		else
    			echo $tb;
    	}
    		function getClassTag($node)	{
    		
    		switch($node)	{
    			case DESIGN	:	return(	$this->class_td!="" ? " class=\"".$this->class_tbdesigner."\"" :	"") ;
    							break;
    			
    			case TD		:	var_dump($this->class_td) ;
    							return(	$this->class_td!="" ? " class=\"".$this->class_td."\"" :	"") ;
    							break;
    			
    			case TR	 	:	return(	$this->class_td!="" ? " class=\"".$this->class_tr."\"" :	"") ;
    							break;
    			
    			case TABLE	:	return(	$this->class_td!="" ? " class=\"".$this->class_table."\"" :	"") ;
    							break;
    			
    			default		: 	user_error("getClassTag[".$node."] undefined !" , E_USER_NOTICE) ;
    							break;
    		}
    	}
    le log:
    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
     
    [24-Aug-2012 12:10:34] PHP Warning:  Invalid argument supplied for foreach() in F:\WebSites\skelt\class\html.php on line 28
     
    [24-Aug-2012 12:10:34] PHP Stack trace:
     
    [24-Aug-2012 12:10:34] PHP   1. {main}() F:\WebSites\skelt\index.php:0
     
    [24-Aug-2012 12:10:34] PHP   2. html->__construct() F:\WebSites\skelt\index.php:24
     
    [24-Aug-2012 12:10:34] PHP Catchable fatal error:  Object of class cells could not be converted to string in F:\WebSites\skelt\class\tableDesigner.php on line 62
     
    [24-Aug-2012 12:10:34] PHP Stack trace:
     
    [24-Aug-2012 12:10:34] PHP   1. {main}() F:\WebSites\skelt\index.php:0
     
    [24-Aug-2012 12:10:34] PHP   2. tableDesigner->printTable() F:\WebSites\skelt\index.php:53
    html....
    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
    	function __construct($css,$debug=False) {
    
    		print("__construct[html]". CRLF) ;
    		
    28==>		foreach($css as $key => $value)	{
    			switch($value) {
    				case DESIGN	:	$this->class_tbdesigner 	= $key ; // $class_tbdesigner;
    								break ;
    	
    				case TD		:	$this->class_td 			= $key ; // $class_td;
    								break ;
    				
    				case TR		:	$this->class_tr 			= $key ; // $class_tr;
    								break ;
    				
    				case TABLE	:	$this->class_table 			= $key ; // $class_table;
    								break ;
    				
    				default		: 	user_error("Undefined case in html[".$value."]" , E_USER_ERROR) ;
    								break ;
    			}
    		}
    						
    		$this->debug = $debug  ; 
    	}
    Voilà, je pense n'avoir rien oublié... merci

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Commence déjà par corrigé ça :
    PHP Warning: Invalid argument supplied for foreach() in F:\WebSites\skelt\class\html.php on line 28
    Foreach attend un tableau , ce que tu ne semble pas lui donner

  15. #15
    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 Qui est le FILS et qui est le PERE
    Je comprends ce que tu me dis Grunk
    Mais cela fonctionne à 2 niveaux - FILS, PERE - et ne fonctionne plus avec l'ajout de la CELL...
    Autrement rien n'a été modifié...
    Je ne vois donc pas ce que je devrais modifié - à 1ère vue... -

    Source en pièces attachées !

    Merci Grunk
    Fichiers attachés Fichiers attachés

  16. #16
    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 Qui est le FILS et qui est le PERE
    Je comprends ce que tu me dis Grunk
    Mais cela fonctionne à 2 niveaux - FILS, PERE - et ne fonctionne plus avec l'ajout de la CELL...
    Autrement rien n'a été modifié...
    Je ne vois donc pas ce que je devrais modifié - à 1ère vue... -

    Source en pièces attachées !

    Je viens de repasser à 2 classes et tout fonctionne comme avant...
    Cela ne veut pas dire que tout est défini comme il devrait... le fait d'introduire une 3ième classe fait sans doute qu'un passage de paramètre ne se fait pas comme attendu... mais là je patine...

    Merci Grunk

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Dans ton index tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tb->addRow(	 array(	new cells("<img src=\"image/new.gif\" border=0 alt=\"NEW1\" title=\"NEW1\" />")
    alors que Cells attends un tableau $css comme argument.

    J'ai jeté un oeil au reste du code mais c'est vraiment trop brouillon pour essayer de comprendre quelque chose :/

  18. #18
    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 Qui est le FILS et qui est le PERE
    Merci Grunk...
    Je pense qu'il y a une erreur de conception
    Je m'explique...

    TBDesigner est initié avec les paramètres généraux de la table

    addRow de tbdesigner est la méthode utilisée pour ajouter une ligne de la table.....

    printTable de tbdesigner est utilisé pour la génération html de la table et donc, appelle getClassTag pour afficher la cellule avec les tags html
    ----------
    A partir du moment ou addRow existe, il n'y a selon moi, aucune raison d'avoir un lien TBDesigner - cells - html...

    cells -> html reste...
    ---
    Cells a été introduit pour définir une cellule, taille, style ($css) et colSpan

    Le $css définit dans TBDesigner, ce qui m'a sans doute enduit en erreur...

    Je pense que cela clarifie un peu... Non ?

    Pas tout à fait d'accord sur ton commentaire par rapport à la clarté du code, heureusement que tu n'as pas vu celui-ci avant nettoyage comme annoncé il y a quelques jours, depuis lors celui-ci a été fait... LOL

    --
    Mais cela me pose d'autres questions...
    Car une méthode d'html (getClassTag) est utilisée et la classe n'est pas instancié explicitement... juste hérite via l'extends de tableDesigner...
    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
     
    class tableDesigner extends cells{
    	private $css, $debug, $colCnt ;
    	private $data, $rowCnt;
     
    	function __construct(	$colCnt,   $css = array(), $debug=FALSE	)
    	{	$this->colCnt	= $colCnt ;
    		$this->css		= $css ;
    		$this->debug	= $debug ;
    //
    		$this->rowCnt 	= 0 ;
    		$this->data		= NULL ;
     
    //		parent::__construct($css,$debug) ;
     
    		print("__construct[tabledesigner]". CRLF) ;
    	}
    Actuellement, seul la méthode addRow contient du code de test... ou bidon..
    Selon moi, le reste est "propre"... selon moi....
    .....
    Merci Grunk

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Je pense qu'il y a une erreur de conception
    je pense que l'erreur c'est de vouloir écrire un tableau html avec des classes PHP ^^ , mais bon chacun voit midi à sa porte comme on dit

    Le seul conseil que je peux te donner c'est de tout remettre à plat , d'y aller méthode par méthode.
    Dans l'état je peux pas t'aider plus à moins de tout recoder moi même

  20. #20
    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 Qui est le FILS et qui est le PERE
    Je pensais avoir tout mis à plat après avoir fait mon 1er test ok avec 2 classes -TBDesigner et Html - mais c'est l'introduction de Cells qui a généré des interrogations et donc des questions même sur des acquis que je pensais être derrière moi
    Ces questions se trouvent en bas de mon post précédent et restent sans réponse, que ce soit par lecture, pdf ou via votre site !
    Quelque soit l'exemple, ces questions seraient je pense, toujours d'actualité !
    Tu ne crois pas ?

    La question principale est comment une classe peut elle être instanciée sans passer par son contructeur (et donc un print() témoin... ?
    J'ai toujours dans mon 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
    class tableDesigner extends cells{
    	private $css, $debug, $colCnt ;
    	private $data, $rowCnt;
    	
    	function __construct(	$colCnt,   $css = array(), $debug=FALSE	)
    	{	$this->colCnt	= $colCnt ;
    		$this->css		= $css ;
    		$this->debug	= $debug ;
    //
    		$this->rowCnt 	= 0 ;
    		$this->data		= NULL ;
    		
    //		parent::__construct($css,$debug) ;
    
    		print("__construct[tabledesigner]". CRLF) ;
    ....
    class cells extends html{
    	private $cellDef ;
    /**
    * 	__constructor
    *
    */	
    	function __contruct($cellDef,$css,$debug=FALSE)	{
    		$this->cellDef = $cellDef ;
    		parent::__construct($css,$debug) ;
    		print("__construct[cells]" . CRLF) ;
    	}
    ...
    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) ;
    Je n'ai que le print de TBDesigner visualisé à l'écran...

    Merci Grunk

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