我遇到了一个有趣的难题。在DataMapper类中,我正在生成一个类名,该类名用于数据库返回的行。
事实是,我所有的类都是自动加载的,并且可以来自许多地方(库,应用程序/模型等),我想检查生成的类名是否确实存在。现在,人们会认为:
try
{
$test = new $className();
}
catch(Exception $ex)
{
// Class could not be loaded
}
但是,当然,php错误(而不是引发异常)表示找不到该类……不是很有帮助。缺少在Zend_Loader中重写自动加载器以搜索所有目录以查看是否可以加载该类的方法,还有什么方法可以完成?
对于想知道为什么我需要这样做而不是只显示Class Not Found错误的人,如果找不到该类,我想在一个预定的位置生成一个类,以使我的生活变得轻松如这个项目进展顺利。
提前感谢!
艾米
P.S。让我知道你们是否需要更多信息。
PHP的函数class_exists()
具有一个标志,如果尚未加载该类,则触发自动加载器:
http://www.php.net/class_exists
所以您只需写
if (!class_exists($className)) {
// generate the class here
}