首页 文章

将PHPExcel与composer和Symfony2.2一起使用

提问于
浏览
4

我在SO上找到了这个:How to use PHPExcel correctly with Symfony 2

这有效,但我想将它与作曲家一起使用 . 我已经解决了第一部分:加载PHPExcel以获取特殊标记(最后一个稳定版本)

我不知道如何使用以下语法获取标记:

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/umpirsky/SyliusAssortmentBundle"
    }
]

所以我使用 Package 表示法:
我发现, reference 应该是github上的标签名称 . 并且 version 不能是相同的值(PHPExcel_1.7.8) . 似乎不允许使用字母字符,因此它只是版本号(1.7.8)

"repositories": [{
    "type": "package",
    "package": {
        "name": "PHPOffice/PHPExcel",
        "version": "1.7.8",
        "source": {
            "url": "https://github.com/PHPOffice/PHPExcel.git",
            "type": "git",
            "reference": "PHPExcel_1.7.8"
        }
    }
}]

下一步我没解决 . 我尝试了自动加载的每个组合:psr-0,类图,不同的路径,相对于项目/供应商/ phpexcel,每次都更新作曲家,但没有任何效果 .

只有我放这条线才有效

$loader->add('PHPExcel', __DIR__.'/../vendor/PHPOffice/PHPExcel/Classes');

进入app / autoload.php . 我发现,第一个字符串( PHPExcel )也可以是一个空字符串: '' .
如果我使用 PHPExcel'' ,是否存在差异?

So my primary question is ,如何避免将此行写入autoload.php,将等效命令放入我的项目的composer.json中?

1 回答

  • 8

    关于你的主要问题,问题是一旦安装了软件包,如果你更新定义并添加自动加载的东西,那么运行 composer update 将不会改变任何东西 . Composer仍然具有已经安装在其"cache"中的旧包,因此它使用它来生成自动加载并且失败 .

    要解决此问题,您应该直接删除 vendor/PHPOffice/PHPExcel 并运行 composer update ,它将使用您的composer.json中的最新信息重新安装它,包括自动加载等 . 您应该指定自动加载:

    "repositories": [{
        "type": "package",
        "package": {
            "name": "PHPOffice/PHPExcel",
            "version": "1.8.0",
            "source": {
                "url": "https://github.com/PHPOffice/PHPExcel.git",
                "type": "git",
                "reference": "1.8.0"
            },
            "autoload": {
                "psr-0": {
                    "PHPExcel": "Classes/"
                }
            }
        }
    }],
    "require": {
        "PHPOffice/PHPExcel": "1.8.*",
        ...
    

    关于次要问题和 '' vs 'PHPExcel''' 只是说在这个目录中可以找到任何命名空间 . 这意味着自动加载器将始终扫描此目录以查找类,这比显式地将名称空间映射到目录更方便但速度慢 . 所以两者都有效,但更具体的形式是首选,特别是在您公开发布的包中 .

相关问题