5

私は初めてPHP名前空間を使用しようとしていますが、2つのファイルで動作する非常に基本的な例を取得することさえできません。これが私のディレクトリ設定です:

/Framework/
/Framework/index.php
/Framework/Models/TestModel.php

そして、これが2つのファイルの背後にあるコードです。

index.php:

    名前空間フレームワーク;

    \ Framework \ Models\TestModelを使用します;

    $ model = new TestModel();
    $ model-> test();

TestModel.php:

    名前空間Framework\Models;

    クラスTestModel
    {{
        パブリック関数test()
        {{
            print( "test");
        }
    }

エラーは、単にTestModelクラスが見つからないことです。

致命的なエラー:クラス'Framework \ Models \ TestModel'が7行目のC:\ xampp \ htdocs \ Framework\index.phpに見つかりません

localhost / Framework/index.phpのWebブラウザを介してPHPを実行しています。それは私が見ていない本当に単純なものでなければなりません、誰かが私のためにそれを指摘できますか?

4

2 に答える 2

5

ファイル自体の名前空間は、他のクラスや関数とは「区別」されますが、PHP/サーバーは物理ファイルが名前空間に基づいているだけではわかりません。

したがって、人々が言及したように、ファイルを直接含めると、PHPはあなたが何を意味するのかを正確に知ることができます。

PHP がファイルを見つけられない場合、関数 spl_autoload_register() を呼び出します。そのメソッドで、人々は通常、名前空間をディレクトリ構造に一致させる小さな関数を配置し、それに従ってファイルをロードします。

もう 1 つのオプションは、プロジェクトに Composer を含め、PSR-4 自動ロードを使用することです。

{
    "require": {
    },
    "autoload": {
        "psr-4": {
            "App\\": "app_directoy/",
            "Framework\\": "framework_directory/",
        }
    }
}

composer autoload を含めると、定義したように、framework_directory 内のすべての Framework/* が検索されます。

于 2020-11-22T03:01:44.513 に答える