Вот моя структура папок:
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();