加载未在vendor/Composer/autoload_namespace.php中列出的Composer包

加载未在vendor/Composer/autoload_namespace.php中列出的Composer包,php,cakephp,composer-php,fine-uploader,Php,Cakephp,Composer Php,Fine Uploader,我有一个用CakePHP3编写的应用程序。我已经通过Composer安装了Cake和其他软件包 我最近安装的是由 将其放入mycomposer.json中,然后运行composer update: "require": { "fineuploader/php-traditional-server": "1.1.0" } 这已按预期将文件下载到vendor/fineuploader/php传统服务器中 但是,如果我尝试在我的一个蛋糕控制器中引用它,如下所示: use UploadHa

我有一个用CakePHP3编写的应用程序。我已经通过Composer安装了Cake和其他软件包

我最近安装的是由 将其放入my
composer.json中,然后运行
composer update

 "require": {
    "fineuploader/php-traditional-server": "1.1.0"
 }
这已按预期将文件下载到
vendor/fineuploader/php传统服务器中

但是,如果我尝试在我的一个蛋糕控制器中引用它,如下所示:

use UploadHandler;

public function test()
{
    var_dump(new \UploadHandler);
}
表示找不到类“UploadHandler”时出错

我能够运行上述内容的唯一方法是硬编码到相应文件的链接。因此,不要使用UploadHandler而使用
我有

require_once(ROOT . DS . 'vendor/fineuploader/php-traditional-server/handler.php'); 
我读到
vendor/composer/autoload_namespace.php
应该包含可以自动加载的名称空间。但是,当我打开该文件时,没有对该包的引用(实际上只有大约3个,而我的
供应商
目录中有很多包,其中一些我可以很好地使用)


那么,加载
UploadHandler
的正确方法是什么呢?我认为使用Composer的意义在于它负责自动加载这些文件,因此您不必使用类似于
require()

的东西。您是否阅读了
handler.php
文件中的注释

不要直接从客户端代码中使用或引用此代码。相反,这应该通过endpoint.php或endpoint-cors.php文件来实现

因此,AFAICT包没有定义任何自动加载功能,因为您不应该直接使用
UploadHandler
类,而是应该需要
endpoint.php
endpoint cors.php
文件,该文件不包括任何类,并且只在需要时才需要

当然,这些端点文件与CakePHP不兼容,因此您可能有理由直接使用handler类。但是,包不使用名称空间,类名与文件名不匹配,即它既不遵循PSR-0也不遵循PSR-4约定,而且正如前面提到的,包
composer.json
没有定义任何自动加载配置,因此无论包遵循什么约定,这将导致PHP类/文件包没有自动加载功能

因此,如果您想要自动加载功能,您可以通过向项目添加一个
classmap
autoload条目
composer.json
,例如:

{
    "autoload": {
        "classmap": [
            "vendor/fineuploader/php-traditional-server/"
        ]
    }
}
然后重新卸载自动加载器,自动加载应该可以正常工作:

$composer转储自动加载
另见