2012-02-29 6 views
1

Я новичок в PHP, поэтому этот вопрос кажется глупым, но предположим, что я назначаю переменную ABC со значением для нового объекта класса XYZ, то как я могу получить имя «ABC» внутри определения класса XYZ?PHP получить имя экземпляра класса переменной?

$ABC = new XYZ; 
$ABC->echoInstanceName(); //--I wish this line could echo out : ABC 

Это проще, когда экземпляр присваивается элементу массива?

$ABC = array('myElem'=>new XYZ); 
$ABC['myElem']->echoInstanceName(); //--I wish this line could echo out : ABC 

Все предложения оценены!


Больше информации: Я делаю такие вещи: построить систему животных.

Начал с класса nativeAnimal & расширен до обезьяны, слона, рыбы ... и т.д. И во время выполнения я создаю массив из двух ярусов, в котором каждый элемент массива является экземпляром типа Monkey, Elephant или Fish ...

Я хочу, чтобы ключ массива был именем животного. И внутри класса Monkey я хочу, чтобы функция отражала имя обезьяны. Конечно, я могу каким-то образом передать ключ массива в экземпляр, но я хочу не печатать его дважды. (Это может привести к ошибке (ошибкам) ​​позже при изменении только одного имени)

Это невозможно? Или вы могли бы предложить лучший образец? Благодаря !

+0

Это вообще не возможно сделать. Почему вы (думаете, что вам) это нужно? – deceze

ответ

4

Вы не можете этого сделать. Если вы хотите передать ABC ценность XYZ класса, сделать это с дополнительным аргументом в конструкторе:

$ABC = new XYZ('ABC'); 

Там нет другого способа сообщить классу о переменной, что он был назначен.

Пример XYZ Класс:

+0

Ну, вы можете сделать некоторые «debug_backtrace», интроспекцию и взлом ... Но на самом деле нет причин для этого, поэтому +1. :) – deceze

+0

Я только что добавил некоторые сведения, пожалуйста, посмотрите, можете ли вы предложить что-то еще. Благодаря ! –

+0

По-моему, вы можете передать имя животного конструктору и пропустить клавиши массива. Затем вы можете работать с foreach и просто вызывать метод 'getName()' на объектах животных. – hsz

Смежные вопросы