当前位置: 首页 > 知识库问答 >
问题:

PHP:作曲家自动加载不工作

羊舌旭尧
2023-03-14

其实我是新的PHP。我在一个几乎是空的文件夹中运行这个(实际上是按照劳拉-cast教程:用TDD设计一个流畅的应用编程接口)。

我的目录结构看起来像

  • src
    • 表情。php
    • 表达测试。php

    内部作曲家。json:

    {    
        "require-dev": {
            "phpunit/phpunit": "^5.2"
        },
        "autoload": {
            "psr-4": {
                "": "src/"
            }
        }
    }
    

    内部表达测试。php:

    class ExpressionTest extends PHPUnit_Framework_TestCase
    {
        /** @test */
        public function it_finds_a_string()
        {
            $regex = Expression::make()->find('www');
    
            $this->assertRegExp($regex, 'www');
        }
    }
    

    内心的表达。php

    <?php
    
    class Expression
    {
    
    }
    

    然后我运行composer dump autoload并运行phpunit,但仍然得到:

     "Fatal error: Class 'Expression' not found in 
    C:\Users\nobis\code\testing2\tests\ExpressionTest.php on line 8"
    

    我的语法有问题吗?我对作曲家的理解是非常基本的。提前谢谢。

共有2个答案

程招
2023-03-14

您需要在测试的顶部包括自动加载器。它通常是在

require __DIR__ . '/vendor/autoload.php';

您也可以添加一个phpunit.xml文件,告诉它自动加载器在哪里,然后它将在每次测试前运行它:

<phpunit
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
    bootstrap="/path/to/bootstrap.php"

</phpunit>
林正平
2023-03-14

PHPUnit本机不知道Composer,因此,如果不配置PHPUnit,它将不知道您的自动加载程序设置。

尝试使用--引导供应商/自动加载运行PHPunit。php告诉它与自动加载文件一起加载。

如果这不起作用,请检查Composer配置中的命名空间值(即":"src/"可能需要更改。)

 类似资料:
  • 我按照作曲家的说明,成功安装了作曲家。我想使用Tumblr全新的php api客户端。 我的文件夹结构: : : 使用也非常有效。但是当执行找不到该类。 致命错误:类'Tumblr\API\Client'未在第9行的[...]/htdocs/Tumblr/myfile.php中找到

  • 文件自动加载_psr4。php不包含“autoloaddev”部分的名称空间,仅包含“autoload”部分的名称空间。 当我的作曲家。json读取 然后我跑了 My/vendor/composer/autoload_prs4。php文件显示为 谢谢

  • 不知何故,我无法让自动加载正常工作。我正在为phpunit使用以下引导文件。 这个的输出显示,据我所知,注册应该是正常的。 不知怎的,我犯了以下错误。 在myproj文件夹src/test/unit/-DefaultDomainEventTest中,我的文件夹结构如下所示。php-bootstrap。php示例/-NotificationCountChangedEvent。php Notifica

  • 如何自动加载助手函数(在任何类之外)?我可以在应该首先加载的某种引导文件?

  • 我正在使用composer在我的项目中包含一个私有包,其中包含一些我将使用PHPUnit进行测试的类。包的大部分被正确地自动加载,我可以从单元测试中调用类,但是任何与它所在的目录命名相同的类都会抛出“未找到类”错误。 存储库符合psr-0,位于https://github.com/DeschutesDesignGroupLLC/IPS-Source 文件结构示例投掷错误: 调用

  • 我开始学习Composer,并正在开发一个系统,在该系统中,我将文件与核心应用程序文件分开,如下所示: 所以,要在composer中设置此设置。json文件并访问所有类/App much/Core会这样吗? 还是有更正确的方法? 我也读过PSR-0和PSR-4的比较,我仍然有点怀疑应该使用哪一种。在我的情况下,我应该实现什么,PSR-0还是PSR-4?