2017-03-09 7 views
1

私のソースコードを発見していない構造Slim3 - コンテナ:クラス

  • SRC
    • コントローラ
      • controller.php
      • 認証
        • AuthController.php
      • ユーザー
        • UserController.php
    • モデル

composer.json

"autoload": { 
    "psr-4": { 
     "App\\": "src/" 
    } 
}, 

AuthController.php:

<?php 

namespace App\Controllers\Auth; 

use App\Models\User; 

use App\Controllers\Controller; 


class AuthController extends Controller 
{ 
    ... 
} 

UserController.php:スリムアプリで

<?php 

namespace App\Controllers\User; 

use App\Models\User; 

use App\Controllers\Controller; 


class UserController extends Controller 
{ 
    ... 
} 

$container = $app->getContainer(); 

$container['AuthController'] = function ($container){ 
    return new App\Controllers\Auth\AuthController($container); 
}; 

$container['UserController'] = function ($container){ 
    return new App\Controllers\User\UserController($container); 
}; 

functiを呼び出すときに、私はエラーを取得します上のUserControllerでから:

クラス 'のApp \コントローラ\ユーザー\のUserControllerで' が見つかりません

もIntelliJのは、コードをマークし、通知できます:未定義のクラスUserControllerでは。

AuthControllerを使用すると問題なく動作します。

私の意見では、名前空間が間違っていますが、変更方法がわかりません。

私も実行している:あなたは、名前空間のクラスとしてControllersを使用している

composer dump-autoload -o 

答えて

0

。しかし、ディレクトリ構造controllerは小文字です。ディレクトリ名controllersControllersに大文字にする必要があります。その後、ネームスペースを使用することができます。

+0

私はディレクトリ名を 'Controllers'に変更しましたが、何の効果もありません。 – Jurid

+0

しかし、composeを実行した後、dump-autoloadは動作しています – Jurid

関連する問題