PHP使用composer

时间:2015-07-19 19:18:21

标签: php namespaces composer-php autoload

这是我的文件夹结构:

Classes
  - CronJobs
    - Weather
      - WeatherSite.php

我想从我的脚本加载WeatherSite类。我使用自动加载的作曲家:

$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()
    {

    }

}

我做错了什么?

1 个答案:

答案 0 :(得分:31)

您实际上不需要自定义自动加载器,您可以使用PSR-4。

更新autoload中的composer.json部分:

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

解释:它的{"名称空间\\":"目录可在"}中找到。}

不要忘记运行composer dump-autoload来更新Composer缓存。

然后你可以像这样使用它:

include(LIBRARY .'autoload.php');

$weather = new Classes\Weather\WeatherSite();