Загрузка класса из родительского пространства имен
Я работаю над приложением по модульному принципу, то есть у меня есть интерфейс, и я хочу сделать модульный тест для всех классов, которые реализуют этот интерфейс, поэтому я создал абстрактный класс, в котором реализована вся логика (тестирование, если класс на самом деле реализует интерфейс, тестирует возвращаемые значения и т. д.) но когда я пытаюсь наследовать абстрактный класс, я получаю class not found exception
я работаю с пространствами имен, поэтому моя структура каталогов выглядит следующим образом
namespaceA
|->abstract.php
|->namespaceB
|->pluginTest.php
поэтому мое определение класса pluginTest.php выглядит следующим образом
namespace namespaceA\namespaceB;
use namespaceA\Abstract;
class pluginTest extends Abstract
и, очевидно, в моем абстрактном классе есть определение namespaceA, я также попытался вручную включить файл (include("../Abstract.php")
) но это не удалось, но так как я некоторое время использовал автозагрузку, может быть, я плохо помню, как импортировать вручную, я также попытался с псевдонимом класса (using namespaceA\Abstract as X
) и положив \
до namespaceA, но ничего не работает, что я делаю не так, или что мне не хватает
== редактировать ==
мне удалось загрузить класс, используя
include __DIR__ ."/../Abstract.php";
но все равно не автозагрузка
1 ответ
Я решил это, я просто должен добавить тестовый каталог в module.php, как это
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
'namespaceA' => __DIR__ . '/test/' .'namespaceA', //added this line
),
),
);
}