Загрузка класса из родительского пространства имен

Я работаю над приложением по модульному принципу, то есть у меня есть интерфейс, и я хочу сделать модульный тест для всех классов, которые реализуют этот интерфейс, поэтому я создал абстрактный класс, в котором реализована вся логика (тестирование, если класс на самом деле реализует интерфейс, тестирует возвращаемые значения и т. д.) но когда я пытаюсь наследовать абстрактный класс, я получаю 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
                ),
            ),
        );
    }
Другие вопросы по тегам