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

标签 php class laravel 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);

产生:

Dark magic ritual complete. 5 virgins sacrificed to satan.

object(foobar)#1 (0) { }

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

关于PHP:如何在运行时创建和注册类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37011661/

相关文章:

php - 带有 4 个参数的 Joomla 逻辑 PHP 查询

php - 使用单个查询更新 MySQL 表中的所有行

php - 在服务层或模型中的何处放置插入和获取查询逻辑?

Python面向对象编程: Automatically changing instances of a class after changing a class attribute?

c++ - 枚举类在C++中不接受带连字符/破折号的文本

javascript - ajax 调用和 Controller 函数中的多个循环值

php - 如何提高搜索建议的速度?

python - 如何在函数 Python 中调用类

php - Laravel Eloquent 查询反射(reflect)基于另一个表数据的更新数据

当我尝试上传 ai 或 psd 文件时,Laravel 图像验证不起作用