如何在不触发错误的情况下检测类是否存在

2022-08-30 22:09:20

我遇到了一个有趣的困境。在 DataMapper 类中,我正在生成一个类名,用于从数据库返回的行。

问题是,我所有的类都是自动加载的,并且可以来自许多地方(库,应用程序/模型等),我想检查生成的类名是否确实存在。现在,人们会认为:

try
{
    $test = new $className();
}
catch(Exception $ex)
{
    // Class could not be loaded
}

但是,当然,php错误(而不是抛出异常)说找不到该类......不是很有帮助。除了在Zend_Loader中重写自动装入器以搜索所有目录以查看是否可以装入类之外,是否无论如何都可以完成此操作?

对于任何想知道为什么我需要这样做而不是让“找不到类”错误的人,如果找不到类,我想在预定的位置生成一个类,以便在这个项目进行过程中使我的生活变得轻松。

提前致谢!

艾米

附言:如果你们需要更多信息,请告诉我。


答案 1

PHP的函数有一个标志,如果类还不应该被加载,就会触发自动加载器:class_exists()

http://www.php.net/class_exists

所以你只需写

if (!class_exists($className)) {
    // generate the class here
}

答案 2

推荐