Composer自动加载无法正常工作

时间:2016-02-01 20:59:19

标签: php composer-php autoload

我有以下问题:我有类Router(在project / connection / api / callbacks中)和TestRouter(在project / tests / api中)。

类路由器只是示例,我不想要psr-0或4。

路由器在开头就有这个代码:

<?php

namespace Connection\Api\Callbacks;

class Router
{

测试类以此代码开头:

<?php

$loader = require __DIR__ . '/../../vendor/autoload.php';
$loader->add('Connection\\Api\\Callbacks', __DIR__ . '/../../connection/api/callbacks');

class TestRouter extends PHPUnit_Framework_TestCase
{

    function test() {
        $variable = new \Connection\Api\Callbacks\Router();
    }

然后我找不到错误类。请问哪里有问题?

1 个答案:

答案 0 :(得分:0)

您不需要PSR-0,但您正在使用该功能。您用于将类添加到自动加载器的add()方法的代码注释:

/**
  * Registers a set of PSR-0 directories for a given prefix, either
  * appending or prepending to the ones previously set for this prefix.
  *
  * @param string       $prefix  The prefix
  * @param array|string $paths   The PSR-0 root directories
  * @param bool         $prepend Whether to prepend the directories
  */
public function add($prefix, $paths, $prepend = false)

我想知道是什么让你在这种情况下只使用PSR-4。只需在composer.json文件中添加必要的声明即可。

当谈到PHPUnit时,将require "vendor/autoload.php"添加到引导程序文件中,或者如果您不必在那里执行任何其他操作,则将其用作完整引导程序文件。它将使编写测试更容易,因为您不必处理自动加载并将单个类添加到自动加载器。此外,您不会最终实例化多个自动加载器,这些自动加载器不会从自动加载器堆栈中删除。