2010-02-21 6 views
1

dans ma classe j'ai quelques propriétés. Je veux que certaines valeurs de ceux-ci aient une autre propriété. mais j'ai remarqué que ce n'était pas possible.avez une variable dans la valeur d'une propriété de classe?

code:

$property = "my name is: $this->name"; 

a généré une erreur.

J'ai défini le nom $ this-> avec le constructeur.

pourriez-vous en quelque sorte accomplir cela? Je voudrais que "mon nom soit:" soit défini dans la propriété et non dans le constructeur si c'est possible.

merci.

Répondre

1

Vous pouvez faire quelque chose avec des variables variables:

$property = 'name'; 

echo "my name is: {$$property}"; 

Dans ce cas, propriété $ évalue à 'nom' et est préfixé $, donc $ name est le résultat. Cette approche peut avoir des dangers, comme j'espère que vous pouvez apprécier.

Je voudrais douter de ce que vous essayez de faire ici. Si vous voulez à le modèle des messages, pensez à quelque chose comme ceci: si nécessaire

$template = 'hi my name is %name%'; 
echo str_replace('%name%', $name, $template); 

Plus généralement, les propriétés de l'objet utilisé comme la langue est conçu et ajouter des méthodes pour produire des chaînes de sortie. Les variables variables sont généralement inutiles.

+0

oui c'était pour un but de modèle. vos secondes solutions semblent bonnes. – ajsie

0

Vous devez utiliser $ this-> variable pour accéder à la variable d'un objet.

$this->property = "my name is: " . $this->name; 

Cela ne fonctionne que dans l'objet lui-même. Vous pouvez trouver plus d'informations à ce sujet ici: http://ch2.php.net/manual/en/language.oop5.visibility.php.

+0

cela n'a pas fonctionné ... – ajsie

1

Tout ce que vous devez faire est d'ajouter des crochets.

$property = "my name is: {$this->name}"; 

Bien que cela dépende aussi de l'erreur que cela entraîne. Est-ce qu'il dit que l'erreur se produit sur cette ligne spécifique?

Questions connexes