У меня есть 2 класса MyClass и MyClass2. Мне нужно вызвать новый экземпляр MyClass с помощью отражения, передав конструктору экземпляр MyClass2. Это отлично работает, пока я не попытаюсь использовать ссылку в конструкторе MyClass2, $classObject
в этом случае будет null.Возвращаемый класс равен null, когда аргумент конструктора является ссылкой при использовании отражения php
Почему эта проблема возникает? Зная, что этого не происходит при тестировании аналогичного вызова функции между двумя функциями внутри одного класса без отражения !!
$className = 'MyClass';
$args = array(new MyClass2());
$classReflection = new ReflectionClass($className);
$classObject = $classReflection->newInstanceArgs($args);
MyClass
public function __construct(&$myClass2)
'classReflection' не имеет знака доллара в последней строке вашего первого блока кода. Это просто опечатка? –
да @Simon, это опечатка здесь в этом вопросе, а не главная проблема – KAD
Нужно ли это быть ссылкой в первую очередь? Это не нужно делать, если вы передаете объект. Единственная разумная причина беспокоиться об этом, если «MyClass» - это устаревший сторонний код, который вы не можете коснуться ... – deceze