Php 如何动态使用类名

Php 如何动态使用类名,php,class,object,zend-framework,Php,Class,Object,Zend Framework,如何在php中创建类的对象,关键是中间部分可以根据请求进行更改 $myObj = new Application_Model_XYZtable(); XYZ是可更改的部件,取决于用户的请求 我试过这个 $myObj = new Application_Model_ . $XYZ . table(); 但不起作用。使用字符串定义类的全名 可用于确定类是否存在 例如: class testABCtest { } class testDEFtest { } $abc = 'abc';

如何在php中创建类的对象,关键是中间部分可以根据请求进行更改

$myObj =  new Application_Model_XYZtable();
XYZ是可更改的部件,取决于用户的请求

我试过这个

$myObj =  new Application_Model_ . $XYZ . table(); 

但不起作用。

使用字符串定义类的全名

可用于确定类是否存在

例如:

class testABCtest
{

}

class testDEFtest
{

}

$abc = 'abc';
$def = 'def';

$myclass1 = 'test' . $abc . 'test';
$myclass2 = 'test' . $def . 'test';
$myclass3 = 'IDontExists';

$obj1 = new $myclass1();
//          ^-------^--------+
$obj2 = new $myclass2(); //  +----Notice the whole names being variables (string)
//          ^-------^--------+
if (class_exists($myclass3))
{
    $obj3 = new $myclass3();
    var_dump($obj3);
}
else
    var_dump($myclass3 . " does not exist.");
var_dump($obj1, $obj2);
输出

C:\wamp64\www\New folder\test11.php:30:string 'IDontExists does not exist.' (length=26)
C:\wamp64\www\New folder\test11.php:33:
object(testABCtest)[1]
C:\wamp64\www\New folder\test11.php:33:
object(testDEFtest)[2]

您不应该使用对象名称,而是在用户选择的对象内添加属性。基本上,我是在Zend framework 1和应用程序_模型中定义路径的。因此,如果我使用此方法,则会在测试控制器中发现一个错误应用程序\u Model\u XYZtable。我确信您将能够轻松地根据您的案例调整我的通用答案。是否包含名称空间?我包含proteced$\u name=“db.Tbalename”;在我的班上。你在问这个吗?不,我的意思是
使用Application/Model/XYZtable