2016-11-13 3 views
0

Проблема?Вопрос автозагрузчика не возвращается Класс

Загрузочный загрузчик (Автозагрузчик) не работает должным образом, или я что-то пропускаю. Вот упрощенный код.

ниже код возвращает

Класс "Скелет" не существует.

О файле index.php.

index.php

<?php 

include 'bootloader.php'; 
use Skeleton\Html\LoginHeader; 
$tool = new Skeleton/Html/LoginHeader(); 

bootloader.php

<?php 

function Boot($className) { 
     $fileName = ''; 
     $namespace = ''; 

     // Sets the include path as the "src" directory 
     $includePath = dirname(__FILE__).DIRECTORY_SEPARATOR.'src'; 

     if (false !== ($lastNsPos = strripos($className, '\\'))) { 
      $namespace = substr($className, 0, $lastNsPos); 
      $className = substr($className, $lastNsPos + 1); 
      $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR; 
     } 
     $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; 
     $fullFileName = $includePath . DIRECTORY_SEPARATOR . $fileName; 

     if (file_exists($fullFileName)) { 
      require $fullFileName; 
     } else { 
      echo 'Class "'.$className.'" does not exist.'; 
     } 
    } 
    spl_autoload_register('Boot'); // Registers the autoloader 

SRC/Скелет/HTML/LoginHeader.php

<?php 

namespace Skeleton\Html; 

class LoginHeader() { 
    echo "<h1>Login Header OK!</h1>"; 
} 

ответ

1

Пара вопросов здесь:

1) Эта линия/раздел не прав:

class LoginHeader() { 

Должно быть:

class LoginHeader 
    { 
     public function __construct() 
      { 
       echo "<h1>Login Header OK!</h1>"; 
       ...etc 

2) Вы не назначая свой класс правильно. У вас есть:

$tool = new Skeleton/Html/LoginHeader(); 

Должно быть обратные косые:

  --------v----v 
$tool = new Skeleton\Html\LoginHeader(); 

После того, как вы исправить вашу обратную косую черту, вы получите синтаксическую ошибку на странице класса, как уже отмечалось, но сама ваша автозагрузчик работает отлично.

Смежные вопросы