簡體   English   中英

作曲家和PSR-0

[英]Composer and PSR-0

我有這樣的composer.json結構:

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

我在app / database / seeds中有文件(此處的文件可以動態創建,因此使用“ classmap”解決方案:[“ 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 dump-autoload之后,我無法在應用程序中使用,例如在index.php中

 $object = new \DatabaseSeeder\DatabaseSeeder();

因為我收到錯誤:類DatabaseSeeder \\ DatabaseSeeder不存在,為什么? 它應該在啟動對象時自動加載類。

首先,您應確保index.php正確包含composer自動加載。

<?php

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

然后,您需要驗證目錄結構以正確地自動加載。

如果您的PSR-0配置是

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

那么您的目錄結構應如下所示:

app/
   database/
       seeds/
           DatabaseSeeder/
               DatabaseSeeder.php

有關composer PSR-0自動加載的更多信息,您可以閱讀composer 模式文檔。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM