PHP中未捕获的ReflectionException(如何解决)
在尝试学习如何使用PHP ReflectionClass时,我遇到了这个问题 致命错误:未捕获的ReflectionException:Class\DatabaseTable在C:\xampp\htdocs\img\index.php中不存在。php:5堆栈跟踪:#0 C:\xampp\htdocs\img\index.php(5):ReflectionClass->u构造('\DatabaseTable')#1{main}在C:\xampp\htdocs\img\index.php的第5行抛出 同时(仅出于测试目的),index.php、classInfo.php和DatabaseTable.php都在同一个文件夹中 这是index.php文件PHP中未捕获的ReflectionException(如何解决),php,reflection,php-7,Php,Reflection,Php 7,在尝试学习如何使用PHP ReflectionClass时,我遇到了这个问题 致命错误:未捕获的ReflectionException:Class\DatabaseTable在C:\xampp\htdocs\img\index.php中不存在。php:5堆栈跟踪:#0 C:\xampp\htdocs\img\index.php(5):ReflectionClass->u构造('\DatabaseTable')#1{main}在C:\xampp\htdocs\img\index.php的第5行抛出
<?php
require 'classInfo.php';
require 'DatabaseTable.php';
$class = new ReflectionClass('\\DatabaseTable');
echo classInfo::getData($class);
?>
classInfo.php类只有一个方法,它是静态的。错误消息说:class\DatabaseTable不存在。您确定这个类是在DatabaseTable.php中定义的吗 从PHP5.5开始,class关键字也用于类名解析。您可以使用ClassName::class获得包含ClassName类的完全限定名的字符串 尝试检查类是否存在:
var_dump(class_exists(DatabaseTable::class));
假设在DatabaseTable.php中:
class DatabaseTable
{
public function __construct() {}
}
然后,您可以在索引中写入:
$class = new ReflectionClass(DatabaseTable::class);
更新
使用名称空间。
# DatabaseTable.php
namespace MyNamesapce;
class DatabaseTable
{
// ...
}
# index.php
use MyNamesapce\DatabaseTable;
$class = new ReflectionClass(DatabaseTable::class);
# or
$class = new ReflectionClass(MyNamespace\DatabaseTable::class);
让我们看一下
DatabaseTable.php的内容
您确定`名称空间
DatabaseTable`在吗?是名称空间问题导致了错误。在开始阶段,我曾想过将测试目的设置为一个代理项目,但后来决定不这样做,但在数据库表中,我已经为itThanks命名了名称空间。我之前添加了名称空间。如果需要,可以使用命名空间:\YourNamesapce\DatabaseTable::class