如何使用命名空间动态加载 PHP 类

这是我的静态代码 -

$tireBrick = new DataObject\Objectbrick\Data\classname($object);

我需要的是,我需要将“类名”更改为变量(动态加载类)

`$tireBrick = new DataObject\Objectbrick\Data\$brickName($object);`  //But php doesn't allow to use this syntax.

如您所见,它将动态分配“ $brickName($object)

谁能帮我动态加载这个类?

谢谢塔兰加。


小怪兽爱吃肉
浏览 142回答 3
3回答

潇潇雨雨

用于::class获取完整的类名:$myClass = classname::class; // DataObject\Objectbrick\Data\classname$tireBrick = new $myClass($object);

慕森王

$tireBrick = "new DataObject\\Objectbrick\\Data\\".$brickName($object);或者尝试了解命名空间以缩短它

绝地无双

我有一堆拼写检查类解决了这个问题。它看起来像这样:$baseClass = 'SpellChecker';$activeChecker = $activeChecker ? 'Hun' : Yii::$app->params['spellChecker']['active'];$spellCheckerClass = "common\\models\\spellchecker\\$activeChecker$baseClass";然后你可以像这样使用它:/** @var SpellChecker $spellChecker */$spellChecker = new $spellCheckerClass();现在整个事情的本质是如果你使用类似的类是最好的,所以你可以使用这些函数而不用担心如果函数不存在它们会使应用程序崩溃。为此,您可以实现一个观察者模型,在其中定义要在观察者类中使用的每个函数,然后创建子类,在其中覆盖观察者类的功能。
打开App,查看更多内容
随时随地看视频慕课网APP