La génération d'un PHAR pour une application simple
Je suis en train d'expérimenter dans la construction des outils CLI à l'aide de la console Symfony2 bibliothèque. J'ai quelque chose de base de travail et maintenant je veux le paquet comme un phar. J'ai lu quelques exemples, mais ceux que j'ai vu sont très simples (3 fichiers, pas les espaces de noms, etc).
Dans mon src/
répertoire j'ai le texte suivant:
Ci-dessus src/
j'ai un console.php
que j'execute pour exécuter l'application. J'ai aussi un vendors/
dir que je suis en utilisant le compositeur pour installer les dépendances. console.php
est très simple:
#!/usr/bin/env php
<?php
set_time_limit(0);
$loader = require 'vendor/autoload.php';
use Symfony\Component\Console\Application;
use Bendihossan\Pinfo\Command\EnvironmentCommand;
use Bendihossan\Pinfo\Command\ExtensionsCommand;
use Bendihossan\Pinfo\Command\RunAllCommand;
$console = new Application();
$console->add(new RunAllCommand());
$console->add(new EnvironmentCommand);
$console->add(new ExtensionsCommand);
$console->run();
De ce (petit) je comprends au sujet de construire un phar je pense que j'ai besoin d'inclure console.php
que le stub et tout le reste dans src/
plus tous mes dépendances dans vendors/
.
Regardant l'exemple de code sur phpmaster.com ils spécifier chaque fichier manuellement pour être inclus dans le phar à l'aide de file_get_contents
, mais j'ai besoin de mettre à jour ma structure de répertoire pour utiliser le compositeur de l'autochargeur et pour le PSR-0 structure de répertoire.
Est-il un moyen facile de créer un .phar et de maintenir mon répertoire de la structure de sorte que je peux encore utiliser du compositeur autochargeur?
Vous devez vous connecter pour publier un commentaire.
Je vous suggère de jeter un oeil à Compositeur de
Compilateur
(il est à l'origine créé par Fabien Potencier en Silex). Dans cette catégorie, vous pouvez voir comment une grande console de l'application comme Compositeur crée la.phar
fichier.Certaines parties intéressantes:
Phar#startBuffering
commence la création de la phar fichier.Ici, le Compositeur utilise le Symfony2 Finder Composant pour trouver tous les fichiers dans le
src
répertoire (à l'exception de ce fichier et l'autochargeur).Ici, Compositeur itère sur chaque fichier trouvé et ajouté à l'archive Phar. (vous pouvez voir la
Compiler#addFile
méthode sur la ligne 116).Cette opération est répétée plusieurs fois. Et puis à la ligne 93, le Compositeur de l'autochargeur est utilisé:
Car Phar est un flux, la structure de répertoire est conservé dans le fichier phar et le Compositeur de l'autochargeur est encore capable de charger les classes.
Puis, à la fin, les talons sont ajoutés et la mise en mémoire tampon arrêté:
(voir la
Compiler#getStub
méthode à la ligne 173). LePhar#stopBuffering
méthode arrêts de la création de la phar et l'enregistre dans le fichier phar.Pour faire de cette histoire, le Compositeur crée une très simple CLI compiler le fichier qui exécute cette commande.