Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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_Oop - Fatal编程技术网

php模拟类名

php模拟类名,php,oop,Php,Oop,我正在PHP中实现类似对象工厂的东西。 我有: 这样,我得到一个对象,它的类名是ObjectParent;我没有为我要创建的每个ObjectChild创建一个类,因此我希望能够做到: $newObject = Factory::createObject('myObjectType'); echo get_class($newObject); //result -> 'myObjectType' 这可能吗?怎样? 谢谢但是我没有类$objectType$objectType是工厂方法的参数

我正在PHP中实现类似对象工厂的东西。 我有:

这样,我得到一个对象,它的类名是ObjectParent;我没有为我要创建的每个ObjectChild创建一个类,因此我希望能够做到:

$newObject = Factory::createObject('myObjectType');
echo get_class($newObject);
//result -> 'myObjectType'
这可能吗?怎样?
谢谢

但是我没有类$objectType
$objectType
是工厂方法的参数。试试看:)啊,我明白了。在这种情况下,您需要使用
eval()
-
eval('class'.$objectType.'extensed ObjectParent{}')
,但我建议重新检查这个问题,因为
eval()
是邪恶的,我不认为您真的不能手动指定所有子类是的,这正是我想要的。请你修改一下你的答案好让我接受吗?Thanx但是我没有类$objectType
$objectType
是工厂方法的参数。试试看:)啊,我明白了。在这种情况下,您需要使用
eval()
-
eval('class'.$objectType.'extensed ObjectParent{}')
,但我建议重新检查这个问题,因为
eval()
是邪恶的,我不认为您真的不能手动指定所有子类是的,这正是我想要的。请你修改一下你的答案好让我接受吗?塔克斯
$newObject = Factory::createObject('myObjectType');
echo get_class($newObject);
//result -> 'myObjectType'
public static function createObject($objectType){
  eval('class '.$objectType.' extends ObjectParent {}');
  return new $objectType();   
}