2016-07-15 2 views
1

Я добавил свое пространство имен с PHP, но не могу заставить его работать.PHP PSR-4 - Класс не найден

Что я делаю неправильно с моей настройкой? Когда я хочу назвать мой тест-класс:

https://hilfe.kbs-community.de/index.php?controller=TanoaLife&params=123 

Я получаю сообщение об ошибке:

класса 'KWinkel \ Helpdesk \ Controller \ TanoaLife' не найден

Мои настройки:

index.php 
<?php 

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
ob_start('ob_gzhandler'); 

// autoloader 
$Autoloader = require __DIR__ . '/vendor/autoload.php'; 
$Autoloader->add('KWinkel\\Helpdesk\\', 'app/'); 

// controller 
if (isset($_GET["controller"])) { 
    $Controller = $_GET["controller"]; 
    if (file_exists("app/Controller/" . $Controller . ".class.php")) { 
     $Class = "KWinkel\Helpdesk\Controller\\" . $Controller; 
     new $Class($_GET["params"]); 
    } else { 
     echo "invalid call #1"; 
    } 
} else { 
    echo "invalid call #2"; 
} 

$SysContent = ob_get_contents(); 
ob_end_clean(); 
echo $SysContent; 

?> 


app/Controller/TanoaLife.class.php 
<?php 
namespace KWinkel\Helpdesk\Controller; 

class TanoaLife extends AbstractController { 
    // 

    function __construct ($Params) { 
     echo "params: " . $Params; 
    } 

} 


?> 
+0

Die ваш файл классов, где определена TanoaLife , определить пространство имен 'KWinkel \ Helpdesk \ Controller'? – JustOnUnderMillions

+1

Изображение кода бесполезно, вставьте соответствующий код в свой вопрос. – vascowhite

+0

Извините, я добавил свой код и пути к файлам – kwinkel

ответ

1

Ваш TanoaLife.class.php должен файлов классов выглядеть следующим образом:

namespace KWinkel\Helpdesk\Controller; 

class TanoaLife { 

} 

и должны быть размещены здесь:

app/Controller/TanoaLife.class.php

работать с автозагрузчика.

UPDATE: Я предпочел бы назвать файл классов TanoaLife.php вместо TanoaLife.class.php или вы должны установить autoloader включать классы с суффиксом .class.php

$Autoloader->addPsr4('KWinkel\\Helpdesk\\', 'app');

https://github.com/composer/composer/blob/master/src/Composer/Autoload/ClassLoader.php

+0

Его уже случай, я добавил некоторую информацию к первому сообщению – kwinkel

+0

Теперь ваш автозагрузчик теперь должен добавить .class.php вместо .php в имя класса, когда он пытается загрузить его? – JustOnUnderMillions

+0

Нет, я удалил .class из моего index.php и из путей к файлу. Это НЕ работает в любом случае. – kwinkel

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