在自动加载的实现文件中找不到PHP类

时间:2012-01-30 13:13:48

标签: php zend-framework phpunit zend-autoloader

我真的希望这不是重复,但我在这里:

我使用Zend的自动加载器来加载类。它似乎工作,至少它在实例化我的类(Common_TestTest)时加载正确的文件,该类在Common / TestTest.php中实现。但后来我收到以下错误消息:

“在Common / TestTest.php中找不到类Common_TestTest。”

除了类之外,TestTest.php中没有任何内容:

<?php

class Common_TestTest extends PHPUnit_Framework_TestCase
{
    public function testTesting() {
        $this->assertTrue(true);
        $this->assertFalse(true);
    }
}

我尝试在文件末尾转储get_declared_classes,一切看起来都很好,Common_TestTest是声明的类之一 - 但是在离开文件时仍会抛出异常。

最有趣的一点是:当我将类的名称从Common_TestTest更改为TestTest时,会发生相同的事情 - 只是错误消息将缺少的类的名称指定为{{1} }。所以它肯定会看到这个类并对它的存在作出反应。

1 个答案:

答案 0 :(得分:0)

我想到了导致问题的原因有两种可能性:

  1. 您在类名和文件名之间存在一些不匹配的情况,例如: Testtest.php

  2. 注册命名空间时,使用“Common”而不是“Common_”。 Zend_Loader_Autoloader不区分PHP 5.3样式名称空间和ZF样式名称空间(而不是前缀)。通过附加下划线,您确保将命名空间解释为类前缀而不是真正的命名空间。