2

少し前に小枝拡張機能を作成しました。最近、名前空間を追加して、composer でより簡単に使用できるようにしました。これを数回実行しましたが、他のファイル/クラスでも問題なく動作します。

問題は、composer で autoload を更新またはダンプするときに -o オプション (最適化) を使用した場合にのみ、適切に自動ロードされることです。

たとえばcomposer dumpautoload -o、クラスを実行しても問題はありません。実行composer dumpautoloadしても機能せず、次のエラーが表示されます。

Fatal error: Class 'Crecket\custom_twig_extension' not found in C:\Dropbox\Ampps\www\crecket.dev\index.php on line 24

私の拡張クラス:

namespace Crecket;

class custom_twig_extension extends \Twig_Extension{
    // The code
}

私の作曲家ファイル

"autoload": {
    "psr-4": {
        "Crecket\\": "src/"
    }
}

フォルダ構造

src/custom_twig_extension.php

誰がこれを引き起こしているのか知っていますか? 何が原因なのかわかりません。最適化を使用するときにクラスマップを作成する作曲家に関係していると思います。

4

1 に答える 1

0

ファイル内のクラス名がそれを提供するファイル名と異なるため、同様の問題が発生しました。myclass.php と class MyClass { } がありました

同様の問題に遭遇した人に関するredditの議論によると( https://www.reddit.com/r/laravel/comments/2zx3in/l5_composer_dumpautoload_gives_class_not_found/ ):

PSR-4 では、ファイルにクラスの名前を付ける必要があります。

myclass.php の名前を MyClass.php に変更すると、問題はなくなりました - 両方に同じ名前 (および大文字と小文字) を使用していることを再確認してください!

于 2016-08-12T21:54:19.540 に答える