首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作曲家和PSR-0

作曲家和PSR-0
EN

Stack Overflow用户
提问于 2013-12-21 10:25:22
回答 1查看 724关注 0票数 0

我有这样的composer.json结构:

代码语言:javascript
复制
"psr-0": {
        "DatabaseSeeder\\": "app/database/seeds/"
    },

我在app/database/种子中有文件(这里的文件可以动态创建,所以使用“classmap”解决方案:“app/database/ created”在此不起作用)我必须在播种之前总是转储-autoload:

  • UserTableSeeder.php
  • DatabaseSeeder.php

像这样的结构:

代码语言:javascript
复制
# DatabaseSeeder.php

namespace DatabaseSeeder;

use Doctrine\ORM\EntityManager;

 class DatabaseSeeder implements Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run(EntityManager $em)
    {
            $this->call('DatabaseSeeder\UserTableSeeder', $em);
    }

    private function call($class, $em)
    {
            $reflectionMethod = new \ReflectionMethod($class, 'run');
            $reflectionMethod->invoke(new $class, $em);
    }

在php composer.phar安装和php composer.phar dump-autoload之后,我不能在应用程序中使用,例如在index.php中。

代码语言:javascript
复制
 $object = new \DatabaseSeeder\DatabaseSeeder();

因为我收到错误:类DatabaseSeeder\DatabaseSeeder不存在,为什么??在启动对象时,它应该自动加载类。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-21 11:16:33

首先,您应该确保您的index.php适当地包含了composer autoload。

代码语言:javascript
复制
<?php

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

然后,您需要验证您的目录结构才能正确地自动加载。

如果您的PSR-0配置是

代码语言:javascript
复制
"psr-0": {
    "DatabaseSeeder\\": "app/database/seeds/"
},

那么您的目录结构应该如下所示:

代码语言:javascript
复制
app/
   database/
       seeds/
           DatabaseSeeder/
               DatabaseSeeder.php

有关composer PSR-0自动加载的更多信息,您可以阅读composer 模式文档。希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20717954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档