php phpoffice/phpexcel 上的作曲家自动加载失败

php composer autoload on phpoffice/phpexcel fails

我通过 composer 安装了软件包 phpoffice/phpexcel。无论如何,自动加载不起作用。我尝试了命名空间的每种组合来调用 class 但它不存在:

PHP Fatal error:  Class 'PHPExcel\PHPExcel' not found in

调用它的代码:

$objPHPExcel = new \PHPExcel\PHPExcel();

composer.json 好看:

{
  "name": "Bjc/Iis",
  "description": "A complete software suite for commerce",
  "license": "MIT",
  "keywords": ["commerce"],
  "authors": [
        {
            "name": "me",
            "email": "me@me"
        }
    ],
  "require": {
    "phpmailer/phpmailer": "5.*",
    "components/jquery": "2.*",
    "twbs/bootstrap": "3.*",
    "zendframework/zend-barcode": "*",
    "zendframework/zend-validator": "*",
    "phpoffice/phpexcel": "1.8.*"
  },
  "require-dev": {},
  "autoload": {
        "psr-4": {
            "Bjc\Iis\": "src"
        }
    }
}

命令"composer update"运行很好。 phpoffice/phpexcel 的文件也按预期在 vendor/phpoffice/phpexcel 中。

我在我的脚本中调用作曲家自动加载器如下(它可以与 phpmailer 一起工作):

require_once(__DIR__.'/../vendor/autoload.php');

Phpexcel 在 composer 的所有自动加载器文件中也有引用:

vendor/composer/autoload_static 有(除其他外)这些行:

public static $prefixesPsr0 = array (
        'P' =>
        array (
            'PHPExcel' =>
            array (
                0 => __DIR__ . '/..' . '/phpoffice/phpexcel/Classes',
            ),
        ),
    );

而 vendor/composer/autoload_namespaces.php 看起来像这样:

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'PHPExcel' => array($vendorDir . '/phpoffice/phpexcel/Classes'),
);

谁能看到我的错误?

PHPExcel class 不在命名空间中。

这对我有用:

<?php

require_once __DIR__ . '/vendor/autoload.php';

$phpExcel = new \PHPExcel();

很简单

<?php

require_once __DIR__ . '/vendor/autoload.php';

$phpExcelObject = new PHPExcel();