我正在尝试从这样的成员变量创建一个类:
<?
class A{
private $to_construct = 'B';
function make_class(){
// code to make class goes here
}
}
class B{
function __construct(){
echo 'class constructed';
}
}
$myA = new A();
$myA->make_class();
?>
我尝试使用:
$myClass = new $this->to_construct();
和
$myClass = new {$this->to_construct}();
但都没有奏效。我最终不得不这样做:
$constructor = $this->to_construct;
$myClass = new $constructor();
似乎应该有一种方法可以在不将类名存储在局部变量中的情况下执行此操作。我错过了什么吗?
答案 0 :(得分:3)
你试过这个吗?
$myClass = new $this->to_construct;
答案 1 :(得分:2)
您使用的是PHP 4还是其他什么东西?在5.2.9上$myClass = new $this->to_construct();
完美无缺。
最后,您需要使用PHP。 PHP语法和语义非常不一致。例如,对调用结果的数组访问是语法错误:
function foo() {
return array("foo","bar");
}
echo $foo()[0];
任何其他语言都可以做到这一点,但PHP不能。有时您只需将值存储到局部变量中。
旧版PHP中的func_get_args()
也是如此。如果要将其传递给函数,则需要先将其存储在本地var中。
答案 2 :(得分:0)
如果我在各行之间读得很好,那么你正试图做这样的事情。正确?
class createObject{
function __construct($class){
$this->$class=new $class;
}
}
class B{
function __construct(){
echo 'class B constructed<br>';
}
function sayHi(){
echo 'Hi I am class: '.get_class();
}
}
class C{
function __construct(){
echo 'class C constructed<br>';
}
function sayHi(){
echo 'Hi I am class: '.get_class();
}
}
$wantedClass='B';
$finalObject = new createObject($wantedClass);
$finalObject->$wantedClass->sayHi();
-
坝