【问题标题】:TDD using namespacing (PHP) - Class not found使用命名空间的 TDD (PHP) - 找不到类
【发布时间】:2013-02-10 15:59:01
【问题描述】:

我正在实现一些类,但总是出现以下错误:

PHP Fatal error:  Class 'Foo\Bar\Filter' not found in /blabla/filterTest.php on line 10

我有一个这样的测试(filterTest.php):

<?php

namespace Foo\Tests\Bar\FilterTest;

use Foo\Bar\Filter;

class FilterTest extends \PHPUnit_Framework_TestCase {

    public function testSth() {
        new Filter;
    }
}

还有一个像下面这样的过滤器类(filter.php):

<?php

namespace Foo\Bar;

class Filter {

    public function __construct() {
        echo 'foo';
    }
}

有什么想法吗? o.O

【问题讨论】:

  • @OneTrickPony 我需要包含该文件吗?我虽然没有必要使用命名空间......我也没有任何自动加载测试。
  • 当然可以,PHP 不能神奇地猜测要包含的文件。如果命名空间是文件名的别名,那么它们的声明就没有必要了,不是吗?
  • @OneTrickPony 好的,要学习新东西 :) 无论如何,仍然无法正常工作...我创建了一个自动加载器文件,以便包含该文件。但是在执行测试时,它首先抛出一个错误,然后进入自动加载函数(我在加载函数中看到了一个回显)......我应该如何处理呢?自动加载器文件使用 phpunit 的引导选项加载。
  • @OneTrickPony 哦,我的错>.

标签: php namespaces tdd classnotfound


【解决方案1】:

解决方案就像包含我需要的类所在的文件一样简单......

对于那些像我一样不知道的人,您需要包含该文件。命名空间不会为你做这件事;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2012-10-23
    • 2017-01-26
    • 2017-05-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多