PHP добавление пользовательского пространства имен с помощью автозагрузчика от композитора

Вот моя структура папок:

Classes - CronJobs - Weather - WeatherSite.php 

Я хочу загрузить класс WeatherSite из своего сценария. Im, использующий композитор с автозагрузкой:

 $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.

Обновите раздел autoload в autoload composer.json :

 "autoload": { "psr-4": {"Classes\\Weather\\": "Classes/CronJobs/Weather"} } 

Объяснить: это {"Namespace \\": "каталог, который можно найти в"}

Не забудьте запустить composer dump-autoload для обновления кеша Composer.

Затем вы можете использовать его следующим образом:

 include(LIBRARY .'autoload.php'); $weather = new Classes\Weather\WeatherSite();