HOLGER WOLTERSDORF
CIO • FATHER • HUSBAND • PHP DEV
ORGA-MITGLIED DER
@hollodotme
@phpindd
phpind.de
github.com/hollodotme...
1 2 3
Einführung in
PHAR Tools
PHARs verteilen
& updaten
Anwendungs-
Beispiele
PhiVE
4
Was sind PHARs eigentlich?
๏ PHARs sind (ausführbare) gepackte PHP
Applikationen
๏ PHP-eigenes Format, aber konvertierbar ...
Hallo Welt!
<?php
$phar = new Phar( __DIR__ . '/hello.phar' );
$phar->buildFromDirectory( __DIR__ . '/HelloPHAR' );
$phar-...
php.ini
[Phar]
; http://php.net/phar.readonly
;phar.readonly = On
; http://php.net/phar.require-hash
;phar.require_hash = ...
php.ini
[Phar]
; http://php.net/phar.readonly
;phar.readonly = On
phar.readonly = Off
; http://php.net/phar.require-hash
;...
Einführung in PHAR Tools1
Automate
everything!
Einführung in PHAR Tools1
PHAR Tools vs. Tool-Scripts:
๏ Kaum Mehraufwand
๏ Beliebige Komplexität und Größe
๏ Einfach zu v...
Einführung in PHAR Tools1
Console /
Process
BOX
Project
Dependency
Manager
Einführung in PHAR Tools1
Features Symfony Console:
๏ Coloured Logging / Verbosity-Levels
๏ App-Struktur / Commands
๏ Inpu...
Einführung in PHAR Tools1
Features BOX Project:
๏ Einfache Config für das PHAR-Building
๏ Placeholder z.B. für GIT-Version...
Anwendungs-Beispiele2
Anwendungsbeispiele2
“Standard” PHAR Tools:
๏ Testing: phpunit / codecept
๏ Analysis: pdepend, phpcpd, phpcs, phploc,
phpm...
Anwendungsbeispiele2
DEMO
PHARs verteilen
& updaten
3
PHARs verteilen & updaten3
Tipps für die Verteilung:
๏ Eigenes Repo für die PHARs
๏ Versionierung nach SemVer (ohne “v”!)
...
PHARs verteilen & updaten3
Install / Update-Strategien:
๏ Self-Hosted
๏ GitHub als Download zum Release
๏ PhiVE / PHAR.IO
VIELEN DANK!
@hollodotme
@phpindd
phpind.de
github.com/hollodotme
github.com/PHPinDD
www.fortuneglobe.com
www.phpug-dresde...
AppendixA
Links / Quellen:
๏ Official PHAR documentation: http://php.net/phar
๏ Symfony Console Component: http://symfony....
PHAR better Tools
Nächste SlideShare
Wird geladen in …5
×

PHAR better Tools

454 Aufrufe

Veröffentlicht am

Slides of my talk at PHP USERGROUP DRESDEN on 29.06.2016 bei Collab & Couch

* Example-Source-Code: https://github.com/PHPinDD/phar-better-tool-example
* Example-Distribution: https://github.com/PHPinDD/phar-better-tool-distribution

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
454
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
87
Aktionen
Geteilt
0
Downloads
2
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • built-in PHAR Extension erlaubt den Zugriff auf Dateien innerhalb einer PHAR
    Vorteile von PHAR:
    Kann auch ohne PHAR Extension included / aufgerufen werden
    Sicherheit: Ist per Default read-only (gilt nicht für ZIP und TAR)
  • Zeige Example 1 in PHPStorm
  • readonly: Schränkt den Schreibzugriff auf PHARs ein (gilt nicht für ZIP/TAR)
  • require_hash: Erlaubt das Ausführen nur, wenn Signatur vorhanden
    cache_list: Cached Inhalte von webPHARs
    Zeige Example 1 (Hallo Welt), 2 (Console Stub) & 3 (WebPhar)
    Next: Warum PHAR tools?
  • Wie haben wir bisher automatisiert?
    Shell-Scripts
    PHP-Tool Scripts
    Cronjobs, die Applikationen aufrufen
  • NEXT: Helferlein
  • NEXT: Symfony Console & BOX Project
  • Zeige box.phar key:create, box.phar build box.phar verify
  • Next: “Standard”-Tools
  • NEXT: Helferlein
  • Zeige Example 4
    Zeige IceDump
  • NEXT: Helferlein
  • PHAR better Tools

    1. 1. HOLGER WOLTERSDORF CIO • FATHER • HUSBAND • PHP DEV ORGA-MITGLIED DER @hollodotme @phpindd phpind.de github.com/hollodotme github.com/PHPinDD
    2. 2. 1 2 3 Einführung in PHAR Tools PHARs verteilen & updaten Anwendungs- Beispiele PhiVE 4
    3. 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 PEARPHP_Archive erstellt werden ๏ Lese-/Schreibzugriff über StreamWrapper 1 Einführung in PHAR Tools
    4. 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 Tools1
    5. 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 Tools1
    6. 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 Tools1
    7. 7. Einführung in PHAR Tools1 Automate everything!
    8. 8. Einführung in PHAR Tools1 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
    9. 9. Einführung in PHAR Tools1 Console / Process BOX Project Dependency Manager
    10. 10. Einführung in PHAR Tools1 Features Symfony Console: ๏ Coloured Logging / Verbosity-Levels ๏ App-Struktur / Commands ๏ Input / Output Interfaces ๏ Optionen und Argumente Handling ๏ Diverse Helpers ๏ Hilfe
    11. 11. Einführung in PHAR Tools1 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
    12. 12. Anwendungs-Beispiele2
    13. 13. Anwendungsbeispiele2 “Standard” PHAR Tools: ๏ Testing: phpunit / codecept ๏ Analysis: pdepend, phpcpd, phpcs, phploc, phpmd, … ๏ Dependencies: composer, graph-composer ๏ und viele mehr…
    14. 14. Anwendungsbeispiele2 DEMO
    15. 15. PHARs verteilen & updaten 3
    16. 16. PHARs verteilen & updaten3 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)
    17. 17. PHARs verteilen & updaten3 Install / Update-Strategien: ๏ Self-Hosted ๏ GitHub als Download zum Release ๏ PhiVE / PHAR.IO
    18. 18. VIELEN DANK! @hollodotme @phpindd phpind.de github.com/hollodotme github.com/PHPinDD www.fortuneglobe.com www.phpug-dresden.de @phpugdd HOLGER WOLTERSDORF slides available on slideshare
    19. 19. AppendixA 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

    ×