从父命名空间加载类

时间:2013-09-04 01:04:14

标签: php namespaces zend-framework2 phpunit autoload

我正在以模块化方式处理应用程序,也就是说,我有一个接口,我想对实现该接口的所有类进行单元测试,因此我创建了一个具有所有逻辑实现的抽象类(测试类是否实际实现了接口,测试返回值等)但是当我尝试继承抽象类时,我得到class not found exception我正在使用命名空间,所以我的目录结构是这样的< / p>

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 个答案:

答案 0 :(得分:0)

我解决了它,我只需将测试目录添加到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
                ),
            ),
        );
    }