ajsie
ajsie

Reputation: 79816

have a variable in the value of a class property?

in my class i have some properties. i want some values of these to have another property. but i noticed it wasnt possible.

code:

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

generated an error.

i set the $this->name with the constructor.

could you somehow accomplish this? i would like the "my name is: " to be defined in the property and not in the constructor if its possible.

thanks.

Upvotes: 1

Views: 81

Answers (3)

animuson
animuson

Reputation: 54787

All you should need to do is add brackets.

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

Although it also depends on what error it's giving. Does it say the error is occurring on this specific line?

Upvotes: 1

svens
svens

Reputation: 11628

You have to use $this->variable to access an object's own variable.

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

This only works inside the object itself. You can find more informations about this here: http://ch2.php.net/manual/en/language.oop5.visibility.php.

Upvotes: 0

David Snabel-Caunt
David Snabel-Caunt

Reputation: 58371

You could do something with variable variables:

$property = 'name';

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

In this case, $property evaluates to 'name' and $ is prepended, so $name is the result. This approach can have dangers as I hope you can appreciate.

I would question what you are trying to do here. If you want to template messages, consider something like this:

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

More generally, use object properties as the language is designed and add methods to produce output strings if necessary. Variable variables are generally unnecessary.

Upvotes: 1

Related Questions