2013-12-21 77 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文檔。希望這可以幫助。