【问题标题】:loading a class from a parent namespace从父命名空间加载类
【发布时间】:2013-09-07 08:53:12
【问题描述】:

我正在以模块化方式开发应用程序,也就是说,我有一个接口,我想对实现该接口的所有类进行单元测试,所以我创建了一个实现所有逻辑的抽象类(测试类是否实际实现了接口,测试返回值等等)但是当我尝试继承抽象类时,我得到一个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) 并在命名空间A 之前放置一个\,但没有任何效果,我做错了什么,或者我缺少什么

==edit==

我设法使用

加载类
include __DIR__ ."/../Abstract.php";

但仍然没有自动加载

【问题讨论】:

标签: php namespaces zend-framework2 phpunit autoload


【解决方案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
                ),
            ),
        );
    }

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 2018-06-17
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多