3

以下のように、composer.json ファイルに PSR-4 仕様があります。

"autoload" : {
    "psr-4" : {
        "MyMVC\\" : "app/"
    }
},

ここに画像の説明を入力

上記は私のディレクトリ構造です。私の Core/Config.php ファイルには、名前空間の下にあるクラス Config がありますMyMVC\Core。(問題の例としてConfigクラスを取り上げるだけで、これはすべてのクラスで同じです)。

今、私のConfig/config.phpファイルで、以下のコードを使用しています

<?php
use MyMVC\Core;

Config::$config['base_url'] = 'http://localhost/mymvc';

しかし、これにより Class Config Not Found というエラーが発生します。を使用すれば問題を解決できますMyMVC\Core\Config;。ただし、Config を明示的に使用しなくても機能するはずです。自動ロードされるはずのフレームワークユーザーによって追加されたファイルが存在する可能性があるためです。

ありがとう

4

1 に答える 1

1

useプリミティブは、名前空間またはクラスをインポートまたはエイリアスします。マニュアルには次のように記載されています。

PHP は、クラス名のエイリアス、インターフェイス名のエイリアス、名前空間名のエイリアスの 3 種類のエイリアスまたはインポートをサポートしています。PHP 5.6+ では、関数名と定数名のエイリアスまたはインポートも許可されています。

あなたのuse声明は「名前空間のエイリアス」です。そう

use MyMVC\Core;

以下と同じです:

use MyMVC\Core as Core;

したがって、あなたのコードでは:

Config::$config['base_url'] = 'http://localhost/mymvc';

次のようにする必要があります。

Core\Config::$config['base_url'] = 'http://localhost/mymvc';
于 2015-09-15T01:10:29.687 に答える