Его первая работа с автозагрузчиком и получение некоторых ошибок. структура выглядит следующим образом:PHP-автозагрузчик, не работающий с пространствами имен
- AnimalShop (корень)
- классы
- Shop.php
- index.php
- классы
У меня есть следующий простой код
index.php
<?php
spl_autoload_register(function ($class_name)
{
include $class_name . '.php';
});
echo "<h1>PETs SHOP</h1>";
// Create a shop
$shop = new Shop();
Магазин простой класс
<?php
namespace PHPAdvanced\AnimalShop\classes;
/*
* Pet shop
*/
class Shop
{
/**
* @var Pets[] pets
*/
private $pets = [];
public function addPetsToArray(Pets $pet)
{
$this->pets[] = $pet;
}
/**
* Print pets naam
*/
public function printPets()
{
foreach($this->pets as $pet)
{
echo "<p>" . $pet->getPetNaam() . "</p>";
}
}
}
Когда я запустить index.php я получаю следующие ошибки:
Предупреждение: include (Shop.php): не удалось открыть поток: нет такого файла или каталога в /var/www/phpadvancedCourse/AnimalShop/index.ph p on line 4
Предупреждение: include(): Не удалось открыть «Shop.php» для включения (include_path = '.:/usr/share/php:') в/var/www/phpadvancedCourse/AnimalShop/index. PHP в строке 4
является 'shop.php' находится в'/вар/WWW/phpadvancedCourse/AnimalShop/'? –
nvm я вижу его в вашем вопросе .. –
'include 'classes /'. $ class_name. '.php'; ' – AbraCadaver