首页  >  文章  >  后端开发  >  如何在 PHP 中不使用 eval() 实现动态类实例化?

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-14 20:33:02165浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn