使用变量实例化PHP类不起作用



这正在工作:

$x = new classname();

这不起作用:

$class = "classname";
$x = new $class();

我得到的错误是"找不到类类名"。PHP版本为5.4.22。有什么想法吗?就我对这个主题的研究而言,这正是使用变量实例化类所需要做的。

我的实际测试代码(复制+粘贴),$build=1:

//include the update file
$class="db_update_" . str_pad($build, 4, '0', STR_PAD_LEFT);
require_once(__ROOT__ . "/dbupdates/" . $class . ".php");
$x = new db_update_0001();
$xyz="db_update_0001";
$x = new $xyz();

类别定义:

namespace dbupdates;
require_once("db_update.php");
class db_update_0001 extends db_update
{
...
}

我刚刚发现我的编辑添加了

use dbupdatesdb_update_0001;

到文件。这就解释了"new db_update_0001();"工作的原因。我想要实现的是,我动态地包含数据库更新,这些更新存储在dbupdates/db_update_0001.php 等文件中

谨致问候,Alex

您必须使用完全限定的类名。即namespaceclassname。因此,在您的情况下,代码应该是:

$x = new db_update_0001();
$xyz="dbupdatesdb_update_0001";
$x = new $xyz();

如果您想使用变量作为类名来实例化类,那么use语句是无用的。

试试这个

<?php
$className = yourClassName();
$x = new $className;
?>

最新更新