使用composer自动加载自己的代码

时间:2016-10-20 01:46:15

标签: php namespaces composer-php autoload

我正在尝试构建自己的作曲家项目,并且我正在尝试测试代码以确保它在我开始构建时起作用。我已经阅读了几十个教程和堆栈溢出问题,而且似乎都指出我正在做正确的事情,虽然因为它不起作用,我想我不是。

我的文件结构为:

index.php
composer.json
composer.lock
vendor/
src
    \Frankenstein
         \DB
            |FrankensteinDB.php

并使composer.json看起来如下:

{
  "autoload": {
    "psr-4" : {"Frankenstein\\":"src/Frankenstein"}
  },
  "require": {
    "enrise/frisbee": "0.1.0"
  }
}

FrankensteinDB.php看起来像:

<?php

namespace Frankenstein\DB;

use Frisbee\Exception\Flingable;

class FrankensteinDB extends Flingable
{   
    public function __construct($name)
    {
        parent::__construct($name, 1337);
    }

    public function run()
    {
    }

    public function next()
    {
    }
}

当然最后,index.php如下:

<?php

require_once 'vendor/autoload.php';

use Frankenstein\DB\FrankensteinDB;

try {
    throw new FrankensteinDB('frankenstein');
} catch (Error $e){
    $e->getCode();
}

每次我运行代码时,我都会Class 'Frankenstein\DB\FrankensteinDB' not found而我无法找出原因。我已经尝试了命名空间,使用和composer psr-4部分中的每个文件夹组合,似乎没有任何工作。我还在每次更改后运行composer update,以确保重新生成自动加载文件。

0 个答案:

没有答案