PHP:如何在运行时创建和注册类


PHP: How to create and register class at runtime

在PHP运行时是否有任何官方/推荐的方法来声明/定义/注册新类?

我基本上想做的是基于存储在数据库中的定义生成类,包括属性和方法。

我发现了一些文章/线程,但它们实际上都是旧的,所以我想知道是否存在一些优雅/有效的方法。我惊讶的是,没有我想象的那么多关于这方面的信息。

这么糟糕吗?据我所知,PHP总是将类定义保存在内存中,所以我认为在运行时声明类没有任何问题,因为它基本上是相同的结果,但也许我错了。

我认为现在不相关,但我正在与Laravel合作这个项目。

谢谢!

是。

<?php
$foobar = "foobar";
eval("class $foobar {" .
        "function __construct('$i) {" .
                "echo '"Dark magic ritual complete. '$i virgins sacrificed to satan.'"; " .
        "}" . 
" }");
$evil = new $foobar(5);

echo "<br /><br />";
var_dump($evil);

产品:

黑暗魔法仪式完成。5个处女向撒旦献祭。

对象(foobar)#1(0){}

我不打算向您讲授语义,但这是一个非常糟糕的想法,您应该重新考虑使用类来促进数据库记录所需的内容。类本身并不特殊,但使用类来处理数据库条目是完全可以接受的。