使用PHPExcel与作曲家和Symfony2.2
我那么发现这个上:How to use PHPExcel correctly with Symfony 2使用PHPExcel与作曲家和Symfony2.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,classmap,不同的路径,相对于项目/供应商/ phpexcel,每次更新作曲家,但没有任何工作。
它仅适用,如果我把这个线
$loader->add('PHPExcel', __DIR__.'/../vendor/PHPOffice/PHPExcel/Classes');
到应用程序/ autoload.php。我发现,第一个字符串(PHPExcel
)也可以是一个空字符串:''
。
是否有差异性,如果我用PHPExcel
或''
?
所以我的主要问题是,我该如何避免写这行到autoload.php中,把相应的命令放到我的项目的composer.json中?
关于您的主要问题,问题是,一旦安装了软件包,如果您更新的定义,并添加自动加载的东西,然后在运行composer update
不会改变任何东西。 Composer仍然具有已经安装在其“缓存”中的旧软件包,因此它使用该软件包来生成自动加载并且失败。
要解决这个你应该直接删除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'
:''
只是说,任何命名空间可以在此目录中找到。这意味着自动加载器将始终扫描此目录以查找类,这很方便,但比显式地将名称空间映射到目录要慢。所以两者都可以工作,但更具体的形式更受欢迎,尤其是在您公开发布的软件包中。
你的意思,与'将与您composer.json的最新信息,包括自动加载,etc.'重新安装?如何为PHPExcel包含/启用自动加载,它没有自己的composer.json,也没有名称空间? – timaschew 2013-04-24 18:38:03
我会编辑我的答案来回答这个问题。 – Seldaek 2013-04-25 08:02:29
正如我所说,一旦你这样做,你必须首先删除供应商/ PHPOffice然后运行更新,强制它重新安装包。 – Seldaek 2013-04-25 12:17:39