tags:

views:

28

answers:

3

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.

A: 

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.

svens
it didnt work...
weng
+1  A: 

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.

David Caunt
yes it was for a templating purpose. your second solutions looks good.
weng
A: 

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?

animuson