Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中未捕获的ReflectionException(如何解决)_Php_Reflection_Php 7 - Fatal编程技术网

PHP中未捕获的ReflectionException(如何解决)

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 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
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