tim*_*hew 4 autoload phpexcel symfony composer-php symfony-2.2
我在SO上找到了这个:如何正确使用PHPExcel与Symfony 2
这有效,但我想将它与作曲家一起使用.我已经解决了第一部分:加载PHPExcel以获取特殊标记(最后一个稳定版本)
我不知道如何使用以下语法获取标记:
"repositories": [
{
"type": "vcs",
"url": "https://github.com/umpirsky/SyliusAssortmentBundle"
}
]
Run Code Online (Sandbox Code Playgroud)
所以我使用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"
}
}
}]
Run Code Online (Sandbox Code Playgroud)
下一步我没解决.我尝试了自动加载的每个组合:psr-0,类图,不同的路径,相对于项目/供应商/ phpexcel,每次都更新作曲家,但没有任何效果.
只有我放这条线才有效
$loader->add('PHPExcel', __DIR__.'/../vendor/PHPOffice/PHPExcel/Classes');
Run Code Online (Sandbox Code Playgroud)
进入app/autoload.php.我发现,第一个string(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.*",
...
Run Code Online (Sandbox Code Playgroud)
关于次要问题和''vs 'PHPExcel':''只是说在这个目录中可以找到任何命名空间.这意味着自动加载器将始终扫描此目录以查找类,这比显式地将名称空间映射到目录更方便但速度慢.所以两者都有效,但更具体的形式是首选,特别是在您公开发布的包中.
| 归档时间: |
|
| 查看次数: |
15477 次 |
| 最近记录: |