首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用命名空间动态加载PHP类

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

Stack Overflow用户
提问于 2020-05-19 17:15:53
回答 3查看 25关注 0票数 0

这是我的静态代码-

代码语言:javascript
复制
$tireBrick = new DataObject\Objectbrick\Data\classname($object);

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

代码语言:javascript
复制
`$tireBrick = new DataObject\Objectbrick\Data\$brickName($object);`  //But php doesn't allow to use this syntax. 

正如您所看到的,它将动态分配"$brickName($object)“

有人能帮我动态加载这个类吗?

谢谢,塔兰加。

EN

回答 3

Stack Overflow用户

发布于 2020-05-19 17:43:27

代码语言:javascript
复制
$tireBrick = "new DataObject\\Objectbrick\\Data\\".$brickName($object);

或者尝试学习名称空间来缩短它

票数 0
EN

Stack Overflow用户

发布于 2020-05-19 18:14:00

使用::class获取完整的类名:

代码语言:javascript
复制
$myClass = classname::class; // DataObject\Objectbrick\Data\classname

$tireBrick = new $myClass($object);
票数 0
EN

Stack Overflow用户

发布于 2020-05-19 17:24:48

我有一堆拼写检查类解决了这个问题。它看起来是这样的:

代码语言:javascript
复制
$baseClass = 'SpellChecker';
$activeChecker = $activeChecker ? 'Hun' : Yii::$app->params['spellChecker']['active'];
$spellCheckerClass = "common\\models\\spellchecker\\$activeChecker$baseClass";

然后你可以像这样使用它:

代码语言:javascript
复制
/** @var SpellChecker $spellChecker */
$spellChecker = new $spellCheckerClass();

现在整个事情的本质是,如果你使用类似的类,这是最好的,所以你可以使用这些函数,而不用担心如果函数不存在,它们会导致应用程序崩溃。为此,您可以实现一个观察者模型,在该模型中,您定义要在观察者类中使用的每个函数,然后创建子类,在子类中覆盖观察者类的功能。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61887450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档