如何在 PHP 中不使用 eval() 实现动态类实例化?

Mary-Kate Olsen
发布: 2024-11-14 20:33:02
原创
165 人浏览过

How to Achieve Dynamic Class Instantiation in PHP Without Using eval()?

PHP 中的动态类实例化

在 PHP 中,从变量实例化类的能力在各种场景中都非常有用。人们可以通过有争议的 eval() 方法之外的方法来实现此功能。

问题:

考虑以下代码:

$var = 'bar';
$bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()');
登录后复制

This代码旨在使用变量作为类名来实例化一个类。但是,语法不正确。

解决方案:

要实现不使用 eval() 的动态类实例化,可以先将类名存储在变量中:

$classname = $var.'Class';
$bar = new $classname("xyz");
登录后复制

在此方法中,类名被分配给一个变量 ($classname),然后使用 $classname 变量创建该类的新实例。

用法:

这种技术通常在工厂模式中使用,它允许在不指定确切的类名的情况下创建对象。它还可以在依赖注入框架中查找应用程序,其中类名可以在运行时动态生成或配置。

要进一步了解,请参阅有关 PHP 中的命名空间和动态语言功能的文档。

以上是如何在 PHP 中不使用 eval() 实现动态类实例化?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板