Symfonys Autoloader — реализация родительских пространств имен

Я использую Symfonys Autoloader для проекта со следующей структурой папок/классов:

App
+- Package1
|
+- Package2
  +- Class1.php
|
- Interface1.php

Как теперь реализовать класс из родительского пространства имен. Например, Interface1 из Class1. Это не работает:

namespace App\Package1

Class1 implements App\Interface1
{
    //implement some functions here...
}

Затем автозагрузчик пытается включить App\Package2\Class1\App\Interface1.

С наилучшими пожеланиями,

Мануэль


person mschultheiss    schedule 15.03.2013    source источник


Ответы (1)


загрузчик классов Symfony отлично работает :)

В данном случае это проблема с синтаксисом php.

Вам нужно импортировать пространство имен с помощью «use» или, что проще, вам просто нужна обратная косая черта перед именем класса.

Например:

namespace App\Package1;

use App\Interface1;

Class1 implements Interface1
{
    //implement some functions here...
}

or

namespace App\Package1;

Class1 implements \App\Interface1;
{
    //implement some functions here...
}
person Marino Di Clemente    schedule 15.03.2013
comment
Спасибо за полезный ответ :) - person mschultheiss; 15.03.2013