Panchous
Если тебя не затруднит, поясни свою мысль. Конкретно, что ты имеешь в виду под следующими словами: "создал объект с пустым конструктором"?
Объясню, как я понимаю ситуацию.
1) Создать экземпляр класса с пом. Reflection можно лишь вызвав ReflectionClass::newInstance().
2) При этом, если конструктор имеет обязательные параметры, обойтись без варнигов можно, только передав эти аргументы в ReflectionClass::newInstance().
3) Вызвать метод-конструктор с помощью invoke или invokeArgs невозможно. (Trying to invoke non static method test::__construct without an object)
Я попробовал воспроизвести то, что ты (ну, как мне показалось) хотел донести:
PHP:
class test {
function __construct($p1, $p2)
{
var_dump(func_get_args());
}
}
$reflection = & new ReflectionClass('test');
$args = array('a1', 'a2');
$instance = $reflection->newInstance();
$constructor = $reflection->getConstructor();
$instance1 = $constructor->invokeArgs($instance, $args);
Результат:
[vitek@workstation tree]$ php reflection.php
Warning: Missing argument 1 for test::__construct() in /home/vitek/php/tree/reflection.php on line 3
Warning: Missing argument 2 for test::__construct() in /home/vitek/php/tree/reflection.php on line 3
array(0) {
}
array(2) {
[0]=>
string(2) "a1"
[1]=>
string(2) "a2"
}
То есть способ работает, но с варнигами. И это как-то несуразно - два раза вызывать конструктор...