使用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'''只是说,任何命名空间可以在此目录中找到。这意味着自动加载器将始终扫描此目录以查找类,这很方便,但比显式地将名称空间映射到目录要慢。所以两者都可以工作,但更具体的形式更受欢迎,尤其是在您公开发布的软件包中。

+0

你的意思,与'将与您composer.json的最新信息,包括自动加载,etc.'重新安装?如何为PHPExcel包含/启用自动加载,它没有自己的composer.json,也没有名称空间? – timaschew 2013-04-24 18:38:03

+0

我会编辑我的答案来回答这个问题。 – Seldaek 2013-04-25 08:02:29

+0

正如我所说,一旦你这样做,你必须首先删除供应商/ PHPOffice然后运行更新,强制它重新安装包。 – Seldaek 2013-04-25 12:17:39