Uncaught ReflectionException в PHP (как ее решить) - PullRequest
0 голосов
/ 15 октября 2018

При попытке узнать, как использовать PHP ReflectionClass, я сталкиваюсь с этой проблемой Неустранимая ошибка: Uncaught ReflectionException: Class \ DatabaseTable не существует в C: \ xampp \ htdocs \ img \ index.php: 5 Stacktrace: # 0 C: \ xampp \ htdocs \ img \ index.php (5): ReflectionClass -> __ construct ('\ 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 имеет только один метод и является статическим.

1 Ответ

0 голосов
/ 15 октября 2018

Сообщение об ошибке гласит: Class \ DatabaseTable не существует.Вы уверены, что класс определен в DatabaseTable.php?

Начиная с PHP 5.5, ключевое слово class также используется для разрешения имен классов.Вы можете получить строку, содержащую полное имя класса ClassName, используя ClassName :: class

Попробуйте проверить, существует ли класс:

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);
...