Probleme d'instance de classe

Résolu
gretata Messages postés 172 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 19 janvier 2011 - 15 janv. 2010 à 15:36
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 16 janv. 2010 à 05:23
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
15 janv. 2010 à 21:14
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à ;)
3
gretata Messages postés 172 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 19 janvier 2011
15 janv. 2010 à 23:32
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
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
16 janv. 2010 à 05:23
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à ;)
0
Rejoignez-nous