Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用定义的常量创建对象_Php - Fatal编程技术网

Php 使用定义的常量创建对象

Php 使用定义的常量创建对象,php,Php,随意的PHP问题,或多或少出于好奇。如果这是一个愚蠢的问题,我道歉 $class = 'ClassName'; $object = new $class(); 或 这显然有效 define(CLASS, 'ClassName'); $object = new CLASS(); 或 这是行不通的 只是想知道是否可以使用定义的常量来创建新对象。如果没有,我完全理解原因。那么,您可以这样做: define(MYCLASS, 'ClassName'); $class = MYCLASS; $obj

随意的PHP问题,或多或少出于好奇。如果这是一个愚蠢的问题,我道歉

$class  = 'ClassName';
$object = new $class();

这显然有效

define(CLASS, 'ClassName');
$object = new CLASS();

这是行不通的

只是想知道是否可以使用定义的常量来创建新对象。如果没有,我完全理解原因。

那么,您可以这样做:

define(MYCLASS, 'ClassName');
$class = MYCLASS;
$object = new $class();
…但据我所知,不能像在
new MYCLASS()
中那样直接使用常量,因为它当然会查找名为
MYCLASS
的类

旁注:常量的名称不能与保留字冲突,例如
class
function
,即使它们是大写的

如果出于某种原因,你经常这样做,你可能会做这样愚蠢的事情:

function newClass($str, $args = NULL) {
    return new $str($args);
}
$class = newClass(MYCLASS);

…但我并不推荐。我还想,您可能不需要这么多常量,或者有一种更优雅的方式来完成您正在做的事情,它根本不涉及常量。

Ya,这正是我目前在一个旧脚本中所做的。我只是想问一下。谢谢
define(MYCLASS, 'ClassName');
$class = MYCLASS;
$object = new $class();
function newClass($str, $args = NULL) {
    return new $str($args);
}
$class = newClass(MYCLASS);