Reputation: 79816
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
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
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
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