Probleme d'instance de classe [Résolu]

Signaler
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011
-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
bonjour a tous !!

j'ai un problème au niveau des objets en PHP, je ne comprend pas bien comment ils fonctionnent.

j'essai de faire un get sur un objet en attributs de la classe, mais il me dit que ce n'est pas un objet.

Alors je voudrais savoir si quelqu'un pourrai m'expliquer comment faire pour avoir un objet en attribut, et comment l'utiliser.

je mets le code pour que ce soit plus visible.


require_once 'INews.php';
require_once 'News.bean.php';
class NewsImpl implements INews
{
private $bean;

/**
 * Constructeur
 */
public function __construct($newsBean) {
if ($newsBean instanceof NewsBean) {
echo "TEST : ";
$this->bean = $newsBean;
}
}

/**
 * get the Date of the news
 *
 */
public function getText() {
$bean->getText();
}



Merci a tous

3 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

Dans ta méthode getText() la variable $bean n'est pas définie. Elle vaut donc NULL.
Je pense que tu veux faire référence à la propriété $bean, que tu as définie dans le constructeur. : elle est accessible dans l'instance de la classe par :
$this -> bean

Ce qui fait que ta méthode getText() devrait ressembler à ça :
	public function getText() {
$this -> bean -> getText();
}

Attention, si la méthode getText() de ta classe NewsBean renvoit quelque chose, il ne faut pas oublier de le retourner à nouveau.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

Merci beaucoup, quels débile quand même j'ai pas fais gaffe.

oui bien sur je veux retourner la valeurs du coup ça donne ça.

public function getText() {
 return $this -> bean -> getText();
}


du même j'ai rajouter un type sur le constructeur, je ne sais pas si cela sert à quelque chose vu que je fais un instanceof.

public function __construct(NewsBean $newsBean) {
   if ($newsBean instanceof NewsBean) {
$this->bean = $newsBean;
   }


en tous cas merci du coup de main
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
En fait, c'est la vérification avec instanceof qui est inutile.
Là, tu laisses PHP vérifier que l'argument est un instance de NewsBean. Si ce n'est pas le cas, PHP va déclencher une erreur fatale qui peut être attrapée.

En vérifiant dans le constructeur comme tu le faisais, il convient de lancer une exception si l'argument n'est pas du type attendu. Pourquoi ? Simplement parce que sans ça, ta classe est inutilisable.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)