【发布时间】:2014-09-25 12:53:17
【问题描述】:
这是有效的:
$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 dbupdates\db_update_0001;
到文件。这就解释了为什么“new db_update_0001();”正在工作中。我想要实现的是动态包含存储在 dbupdates/db_update_0001.php 等文件中的数据库更新
问候, 亚历克斯
【问题讨论】:
-
那么
classname类没有定义。向我们展示定义以及包含它的位置和方式。 -
为我工作...Codepad Example
-
这对我有用:$c = "stdClass"; $x = 新 $c();
-
我添加了更多信息。 HTH
标签: php class instantiation