utilisation PHPExcel avec le compositeur et Symfony2.2
J'ai trouvé ceci sur DONC: Comment utiliser PHPExcel correctement avec Symfony 2
Cela fonctionne, mais je veux l'utiliser avec le compositeur.
La première partie, j'ai déjà résolu: de charger PHPExcel pour un tag spécial (la dernière version stable)
Je ne trouve pas comment aller chercher une balise avec cette syntaxe:
"repositories": [
{
"type": "vcs",
"url": "https://github.com/umpirsky/SyliusAssortmentBundle"
}
]
Donc j'utilise la Package
notation:
J'ai découvert, reference
devrait être le nom de la balise sur github.
Et le version
ne peut pas être la même valeur (PHPExcel_1.7.8). Semble que les caractères alphabétiques ne sont pas autorisés, si ce n'est que la version sous forme de nombre (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"
}
}
}]
La prochaine étape je n'ai pas à résoudre. J'ai essayé toutes les combinaisons pour le chargement automatique: psr-0, classmap, des chemins différents, par rapport à projet/vendor/phpexcel, mise à jour de compositeur à chaque fois, mais rien n'a fonctionné.
Il ne fonctionne que, si j'ai mis cette ligne
$loader->add('PHPExcel', __DIR__.'/../vendor/PHPOffice/PHPExcel/Classes');
dans le app/autoload.php. J'ai découvert que de la première chaîne (PHPExcel
) peut également être une chaîne vide: ''
.
Est-il un differnece si j'utilise PHPExcel
ou ''
?
Donc ma question principale est, comment puis-je éviter d'écrire cette ligne dans le autoload.php, mettre l'équivalent des commandes dans mon projet du compositeur.json?
OriginalL'auteur timaschew | 2013-04-24
Vous devez vous connecter pour publier un commentaire.
Concernant votre première question, le problème est qu'une fois que le paquet est installé, si vous mettez à jour la définition et ajouter de chargement automatique des trucs, puis en exécutant
composer update
ne changera rien. Le compositeur a encore de l'ancien paquet qui était déjà installé dans son "cache", de sorte qu'il utilise pour générer l'autoload et qui échoue.Pour résoudre ce problème, vous devez supprimer le
vendor/PHPOffice/PHPExcel
directement et exécutercomposer update
, qui va le réinstaller avec les dernières informations à partir de votre compositeur.json, y compris le chargement automatique, etc. Vous devez spécifier le chargement automatique en tant que tel:Quant à la question secondaire et
''
vs'PHPExcel'
:''
juste dit que tout espace peut être trouvé dans ce répertoire. Cela signifie que l'autochargeur toujours analyser ce répertoire à la recherche de classes, ce qui est pratique mais plus lent que la cartographie des espaces de noms de répertoires de manière explicite. Donc, tous les deux, mais le plus formulaire spécifique est à privilégier, en particulier dans les paquets que vous publier publiquement.will reinstall it with the latest information from your composer.json, including autoload, etc.
? Comment puis-je ajouter / activer le chargement automatique pour PHPExcel, qui ne possède pas son propre compositeur.json et non des espaces de noms?Je vais modifier ma réponse pour répondre à cette question.
Comme je l'ai dit une fois que vous faites cela, vous devez d'abord supprimer vendor/PHPOffice puis exécutez la mise à jour, pour le forcer à réinstaller le package.
Vous pouvez avoir plus de structurer le problème/solution. Tout ce que j'utilise est: "CodePlex/PHPExcel": "1.7.8", en vertu de l'exiger. Pas besoin de PHPOffice ou une entrée de colis ou quoi que ce soit en vertu de l'autochargement.
La dénomination de "PHPExcel" paquet a été mis à jour, vous devez utiliser "phpoffice/phpexcel" dans compositeur.json
OriginalL'auteur Seldaek