Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHAR better tools

PHAR better tools

Introduction to PHAR tools, usage examples, how to distribute and update PHARs, PhiVE und PHAR.io

Holger Woltersdorf

June 29, 2016
Tweet

More Decks by Holger Woltersdorf

Other Decks in Programming

Transcript

  1. HOLGER WOLTERSDORF CIO • FATHER • HUSBAND • PHP DEV

    ORGA-MITGLIED DER @hollodotme @phpindd phpind.de github.com/hollodotme github.com/PHPinDD
  2. 1 2 3 Einführung in PHAR Tools PHARs verteilen &

    updaten Anwendungs- Beispiele PhiVE 4
  3. Was sind PHARs eigentlich? ๏ PHARs sind (ausführbare) gepackte PHP

    Applikationen ๏ PHP-eigenes Format, aber konvertierbar nach ZIP und TAR ๏ Kann mit der PHAR Extension oder 
 PEAR\PHP_Archive erstellt werden ๏ Lese-/Schreibzugriff über StreamWrapper 1 Einführung in PHAR Tools
  4. Hallo Welt! <?php
 
 $phar = new Phar( __DIR__ .

    '/hello.phar' );
 $phar->buildFromDirectory( __DIR__ . '/HelloPHAR' );
 $phar->setDefaultStub( 'bin/main.php' ); /makephar.php <?php
 
 echo 'Hello World!'; /HelloPHAR/bin/main.php Einführung in PHAR Tools 1
  5. php.ini [Phar]
 ; http://php.net/phar.readonly
 ;phar.readonly = On
 
 ; http://php.net/phar.require-hash


    ;phar.require_hash = On
 
 ;phar.cache_list = Einführung in PHAR Tools 1
  6. php.ini [Phar]
 ; http://php.net/phar.readonly
 ;phar.readonly = On
 phar.readonly = Off


    
 ; http://php.net/phar.require-hash
 ;phar.require_hash = On
 
 ;phar.cache_list = Einführung in PHAR Tools 1
  7. Einführung in PHAR Tools 1 PHAR Tools vs. Tool-Scripts: ๏

    Kaum Mehraufwand ๏ Beliebige Komplexität und Größe ๏ Einfach zu verteilen und zu aktualisieren ๏ Nicht ohne weiteres manipulierbar ๏ Herkunft kann verifiziert werden ๏ Dependency Encapsulation
  8. Einführung in PHAR Tools 1 Features Symfony Console: ๏ Coloured

    Logging / Verbosity-Levels ๏ App-Struktur / Commands ๏ Input / Output Interfaces ๏ Optionen und Argumente Handling ๏ Diverse Helpers ๏ Hilfe
  9. Einführung in PHAR Tools 1 Features BOX Project: ๏ Einfache

    Config für das PHAR-Building ๏ Placeholder z.B. für GIT-Version ๏ Stubbing für CLI Executables ๏ Include/Exclude Files ๏ Signing / Verifying mit OpenSSL Key
  10. Anwendungsbeispiele 2 “Standard” PHAR Tools: ๏ Testing: phpunit / codecept

    ๏ Analysis: pdepend, phpcpd, phpcs, phploc, phpmd, … ๏ Dependencies: composer, graph- composer ๏ und viele mehr…
  11. PHARs verteilen & updaten 3 Tipps für die Verteilung: ๏

    Eigenes Repo für die PHARs ๏ Versionierung nach SemVer (ohne “v”!) ๏ Permalink für den latest Build ๏ Katalog für alle Builds (JSON)
  12. PHARs verteilen & updaten 3 Install / Update-Strategien: ๏ Self-Hosted

    ๏ GitHub als Download zum Release ๏ PhiVE / PHAR.IO
  13. Appendix A Links / Quellen: ๏ Official PHAR documentation: http://php.net/phar

    ๏ Symfony Console Component: http://symfony.com/doc/current/components/console ๏ Symfony Process Component: http://symfony.com/doc/current/components/process ๏ BOX-Project (GitHub): https://github.com/box-project/box2 ๏ BOX-Project Documentation: http://box-project.github.io/box2/ ๏ PHAR-Update Lib: https://packagist.org/packages/herrera-io/phar-update ๏ Blog-Post “Distributing a PHP CLI app with ease” by Matthieu Moquet (@MattKetmo): https://moquet.net/blog/distributing-php-cli/ ๏ Blog Post “Secure PHAR Automation” by Matthew Weier O’Phinney: https://mwop.net/ blog/2015-12-14-secure-phar-automation.html ๏ PHAR Updater: ๏ https://github.com/padraic/phar-updater ๏ https://github.com/kherge-abandoned/php-phar-update ๏ Example-Tools: https://github.com/PHPinDD/phar-better-tool-example ๏ Example-Distribution: https://github.com/PHPinDD/phar-better-tool-distribution