私のフォルダ構造は次のとおりです。
Classes
- CronJobs
- Weather
- WeatherSite.php
スクリプトからWeatherSiteクラスをロードしたい。 Im composer with autoload:
$loader = include(LIBRARY .'autoload.php');
$loader->add('Classes\Weather',CLASSES .'cronjobs/weather');
$weather = new Classes\Weather\WeatherSite();
上記のコードが名前空間と名前空間が解決するパスを追加していると仮定しています。しかし、ページがロードされるとき、私は常にこのエラーを受け取ります:
Fatal error: Class 'Classes\Weather\WeatherSite' not found
WeatherSite.phpファイルは次のとおりです。
namespace Classes\Weather;
class WeatherSite {
public function __construct()
{
}
public function findWeatherSites()
{
}
}
私は何を間違えていますか?
実際にはカスタムオートローダーは必要ありません。PSR-4を使用できます。
composer.json
のautoload
セクションを更新します。
"autoload": {
"psr-4": {"Classes\\Weather\\": "Classes/CronJobs/Weather"}
}
説明するには:{"Namespace \\": "directory to be found in" "}
composer dump-autoload
を実行してComposer=キャッシュを更新することを忘れないでください。
その後、次のように使用できます。
include(LIBRARY .'autoload.php');
$weather = new Classes\Weather\WeatherSite();