这是我的静态代码-
$tireBrick = new DataObject\Objectbrick\Data\classname($object);我需要的是,我需要将"classname“更改为变量(动态加载类)
`$tireBrick = new DataObject\Objectbrick\Data\$brickName($object);` //But php doesn't allow to use this syntax. 正如您所看到的,它将动态分配"$brickName($object)“
有人能帮我动态加载这个类吗?
谢谢,塔兰加。
发布于 2020-05-19 17:43:27
$tireBrick = "new DataObject\\Objectbrick\\Data\\".$brickName($object);或者尝试学习名称空间来缩短它
发布于 2020-05-19 18:14:00
使用::class获取完整的类名:
$myClass = classname::class; // DataObject\Objectbrick\Data\classname
$tireBrick = new $myClass($object);发布于 2020-05-19 17:24:48
我有一堆拼写检查类解决了这个问题。它看起来是这样的:
$baseClass = 'SpellChecker';
$activeChecker = $activeChecker ? 'Hun' : Yii::$app->params['spellChecker']['active'];
$spellCheckerClass = "common\\models\\spellchecker\\$activeChecker$baseClass";然后你可以像这样使用它:
/** @var SpellChecker $spellChecker */
$spellChecker = new $spellCheckerClass();现在整个事情的本质是,如果你使用类似的类,这是最好的,所以你可以使用这些函数,而不用担心如果函数不存在,它们会导致应用程序崩溃。为此,您可以实现一个观察者模型,在该模型中,您定义要在观察者类中使用的每个函数,然后创建子类,在子类中覆盖观察者类的功能。
https://stackoverflow.com/questions/61887450
复制相似问题