Для этого вы можете использовать debug_backtrace (). Это немного, но для целей отладки полезно.
class normalClass {
public function someMethod() {
$trace = debug_backtrace();
$trace[1]->object->doSomething();
}
}
Вот как вы делаете глубокие копии в Ruby
d = Marshal.load( Marshal.dump(h) )
Если пара Marchal
#dump/load
не работает, для рельсов существует метод Hash
#deep_dup
, поэтому вы можете:
h = {'name' => 'sayuj',
'age' => 22,
'project' => {'project_name' => 'abc',
'duration' => 'prq'}}
h1 = h.deep_dup
Другой альтернативой является использование гема full_dup (полное раскрытие: я являюсь автором этого драгоценного камня), который обрабатывает массивы, хэши, структуры и может быть расширен до пользовательских классов.
Использовать:
require 'full_dup'
# Other code omitted ...
d = h.full_dup
Также обратите внимание, что full_dup обрабатывает сложные отношения данных, в том числе с циклами или рекурсией.