2013-12-21 40 views
0

我有composer.json结构是这样的:作曲家和PSR-0

"psr-0": { 
     "DatabaseSeeder\\": "app/database/seeds/" 
    }, 

我在应用程序/数据库/种子文件(文件在这里可以被动态地创建,以便溶液以“类映射”:[“应用/数据库/种子“]不在这里工作了BCS我要播种前总是翻斗自动加载:

  • UserTableSeeder.php
  • DatabaseSeeder.php

像这样的结构:

# 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转储,自动加载,我不能在应用程序中的index.php

$object = new \DatabaseSeeder\DatabaseSeeder(); 

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

回答

1

首先,你应该确保你的index.php正确包含作曲家自动加载。

<?php 

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

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

如果您的PSR-0配置

"psr-0": { 
    "DatabaseSeeder\\": "app/database/seeds/" 
}, 

那么你的目录结构应该是这样的:

app/ 
    database/ 
     seeds/ 
      DatabaseSeeder/ 
       DatabaseSeeder.php 

有关作曲家PSR-0自动加载的更多信息,你可以阅读作曲家schema文档。希望这可以帮助。