相关疑难解决方法(0)

PHP使用composer中的autoloader添加自定义命名空间

这是我的文件夹结构:

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)

我究竟做错了什么?

php namespaces autoload composer-php

20
推荐指数
1
解决办法
2万
查看次数

Prestashop 1.6,冲突:2个不同的模块需要相同的类,不同的版本

在我的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有效版本而不会出现任何冲突

谢谢.

php amazon-s3 amazon-web-services guzzle prestashop-1.6

5
推荐指数
1
解决办法
165
查看次数