Utilisation d'une méthode d'une classe appelée dans une classe

Petit nouveau ! | 4 Messages

19 sept. 2015, 20:24

Voici mon cas (que j'ai simplifié) :

Déclaration d'une classe chargée dans une autre classe :
class TATA_Class
{
	var $Id; //Identifiant 
	var $Nom; // Nom

	function __construct()
	{
		$TATA = new TATA_Class;
	}
	public function Charge()
	{
	       Chargement($this);
	}
}

class TOTO_Class
{
	var $Id; //Identifiant 
	var $TATA_Id; //id de TATA
	var $TATA; // Autre classe

	function __construct()
	{
		$TATA = new TATA_Class;
	}
	public function Charge()
	{
	       Chargement($this);
               $this->TATA->Id = $this->TATA_Id;
		$this->Table->Charge();
	}
}


Dans mon PHP, si je fais :
$TITI = new TOTO_Class;
$TITI->Charge();

Il ne trouve pas la méthode charge de TATA alors que l'objet $TATA existe bien (je peux l'afficher).

Une idée ???

Mammouth du PHP | 2703 Messages

19 sept. 2015, 20:40

<?php
class _Core{
    var $pdo="test";
    var $essai="test";
 
    function __construct(){    
        $pdo = "pdo";
        $this->essai = "pdo";
    }
}
 
$plugin = new _Core();
echo $plugin->pdo;
echo "<br>".$plugin->essai;
?>
à priori, le problème est illustré par ce code.

Petit nouveau ! | 4 Messages

19 sept. 2015, 20:44

Désolé je ne comprends pas la réponse.
Dans mon cas, j'appelle une classe dans une classe et j'essaie d'utiliser la méthode de la classe appelée.
La réponse semble ne pas répondre du tout à la question.

Nestecha
Invité n'ayant pas de compte PHPfrance

23 sept. 2015, 14:41

Plusieurs soucis dans ton code.

Premièrement, déclare les propriétés de ta classe en utilisant public, private ou protected (et non var, c'est l'ancienne syntaxe).

Ensuite, ce que tu cherches à faire c'est de l'injection de dépendances. Tu veux appeler la méthode d'une classe dans une autre classe.

Dans le construct de ta class TOTO, mets un paramètre $oTATA, puis le corps de ta fonction sera $this->TATA = $oTATA.

Ensuite dans ton code final, cree un nouvel objet TATA, puis lorsque tu crées un nouvel objet TOTO, mets l'objet TATA en paramètre.

Ainsi, toutes les méthodes de TATA seront disponibles.

De plus, tu pourras utiliser d'autres classes à la place de TATA, comme TUTU ou TETE.

Petit nouveau ! | 4 Messages

23 sept. 2015, 16:02

Merci beaucoup, ça marche impeccable !