这是我的文件夹结构:
Classes
- CronJobs
- Weather
- WeatherSite.php
Run Code Online (Sandbox Code Playgroud)
我想从我的脚本加载WeatherSite类.我使用自动加载的作曲家:
$loader = include(LIBRARY .'autoload.php');
$loader->add('Classes\Weather',CLASSES .'cronjobs/weather');
$weather = new Classes\Weather\WeatherSite();
Run Code Online (Sandbox Code Playgroud)
我假设上面的代码是添加命名空间和命名空间解析到的路径.但是当页面加载时我总是得到这个错误:
Fatal error: Class 'Classes\Weather\WeatherSite' not found
Run Code Online (Sandbox Code Playgroud)
这是我的WeatherSite.php文件:
namespace Classes\Weather;
class WeatherSite {
public function __construct()
{
}
public function findWeatherSites()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
在我的Prestashop项目中,我有几个模块.在他们中的一个(我们称之为"AWS"),我安装了AWS SDK使用作曲家(在PHPStorm),如解释在这里.作为其他库中的"guzzlehttp",Composer已经"必需"更新到最终版本.
另一方面,还有另一个模块(我们称之为"orangeConnect")与作曲家,它有一个早期版本的"guzzlehttp".
问题在于我在php中使用AWS SDK,在第一个模块中的php脚本中.会发生什么,它试图调用URI Composer类并崩溃.实际上,因为没有一个班级"UriResolver".问题是,如果我删除"orangeConnect",那么AWS SDK会正确连接,这意味着由于"orangeConnect"模块,"AWS"中的类Uri未正确使用.但是,我需要在项目中支持"orangeConnect".
总而言之,我如何解决Prestashop中PHP之间的这种冲突,并允许每个模块包含相应的guzzleHttp有效版本而不会出现任何冲突?
谢谢.