eje211 eje211 - 3 months ago 7
PHP Question

Can a PHP object instance know its name?

If I have code like this:

class Person {
$age;
$height;
$more_stuff_about_the_person;

function about() {
return /* Can I get the person's name? */;
}
}

$John = new Person();
$Peter = new Person();

print $John->about(); // Print "John".
print $Peter->about(); // Print "Peter".


Is it possible to print the person's name, stored as the variable name, from the method?

As it's not standard procedure, I'm guessing it's a bad idea.

I've looked it up and I can't find anything about it.

Answer

No. Objects can have multiple names, or no names. What would happen here:

$John = new Person();
$Richie = $John;      // $John and $Richie now both refer to the same object.
print $Richie->about();

or here:

function f($person)
{
    print $person->about();
}

f(new Person());

If the objects need to know their own names, then they need to explicitly store their names as member variables (like $age and $height).