Вы используете PHP 4 или что-то? На 5.2.9 $myClass = new $this->to_construct();
работает отлично.
В конце концов, это то, с чем вам придется жить, с помощью PHP. Синтаксис и семантика PHP ОЧЕНЬ противоречивы. Например, массив доступа к результату вызова является синтаксической ошибкой:
function foo() {
return array("foo","bar");
}
echo $foo()[0];
Любой другой язык может сделать это, но PHP не может. Иногда вам просто нужно хранить значения в локальных переменных.
То же самое верно для func_get_args()
в старых версиях PHP. Если вы хотите передать его функции, вам сначала нужно сохранить его в локальной переменной.