Не находит класс (Uncaught Error: Class )

138
12 марта 2019, 13:20

Всем доброго дня, не могу понять почему не работает (((

есть папочки

 - install
 --core
 ---installTables.php
 --config
 indexInstall.php

файл indexInstall.php

use install\core\InstallTables;
spl_autoload_register(function ($class_name) {
$path = str_replace('\\', '/', $class_name.'.php');
echo $path; //ПИШЕТ install/core/InstallTables.php
if(file_exists($path)){
require $path;
}
});
$install = new InstallTables();
$install->run();

Файл installTables.php

namespace install\core;
class InstallTables {
public $tables; 

public function __construct(){
$this->tables = require 'install/config/tables.php'; //
foreach ($this->tables as $val) {
echo $val;
}
}
public function run(){
echo 'Тут я запускаюсь';
}
}

Пишет ошибку PHP Fatal error: Uncaught Error: Class Uncaught Error: Class 'install\core\InstallTables' not found in

вообщем проблема была в том что при использовывнии namespace, путь выстриавался не правильный!!!

Answer 1

Сергей, ты стараешься подключить файл которого не существует. Файл называется install/core/installTables.php, а ты подключаешь install/core/InstallTables.php. Также используется проверка на существование файла (file_exists) и подключение, если файл существует, но не используется обработка ситуаций, когда файла нет:

if (file_exists($path)) {
    // файл найден, подключаем файл
    require $path;
} else {
    // иначе - не найден
    $message = sprintf('File "%s" not exists', $path);
    die($message);
}

Также, исправив эту проблему ты столкнешься с другой: PHP Warning: Invalid argument supplied for foreach() потому что в InstallTables задаешь свойству $this->tables результат require. Во первых - require возвращает не содержимое файла, а 1 если файл подключен и не возвращает ничего и false и предупреждение - если не подключен. Скорее всего тебе нужно собрать список файлов в той папке конфигов и заинклюдить каждый в цикле, а потом собирать структуру твоего $this->tables. Думаю, будет полезным array_merge.

Так же посоветую почитать о include, require, и их отличии от include_once и require_once. Потом о composer и PSR-4. Ну и конечно же PSR-2, PSR-1.

READ ALSO
Почему не переходит на другие страницы?

Почему не переходит на другие страницы?

При переходе на любую другую страницу, вываливается ошибка: Sorry, the page you are looking for could not be found

148
Ошибка "Undefined offset:

Ошибка "Undefined offset:

вот такая ошибка у меня ErrorException in SteamAuthphp line 206: Undefined offset: 1 Тут весь код ошибок: http://prntscr

177
Warning: mysqli_connect()

Warning: mysqli_connect()

Не получается подключится к базе данных Есть два файла, первый:

151