phar better tools

20

Upload: php-in-dd

Post on 21-Jan-2017

399 views

Category:

Software


0 download

TRANSCRIPT

Page 1: PHAR better Tools
Page 2: PHAR better Tools

HOLGER WOLTERSDORFCIO • FATHER • HUSBAND • PHP DEV

ORGA-MITGLIED DER

@hollodotme@phpindd

phpind.de

github.com/hollodotmegithub.com/PHPinDD

Page 3: PHAR better Tools

1 2 3

Einführung in PHAR Tools

PHARs verteilen & updaten

Anwendungs-Beispiele PhiVE

4

Page 4: PHAR better Tools

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

Page 5: PHAR better Tools

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

Page 6: PHAR better Tools

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

Page 7: PHAR better Tools

php.ini[Phar]; http://php.net/phar.readonly;phar.readonly = Onphar.readonly = Off

; http://php.net/phar.require-hash;phar.require_hash = On

;phar.cache_list =

Einführung in PHAR Tools1

Page 8: PHAR better Tools

Einführung in PHAR Tools1

Automate everything!

Page 9: PHAR better Tools

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

Page 10: PHAR better Tools

Einführung in PHAR Tools1

Console / Process

BOX Project

DependencyManager

Page 11: PHAR better Tools

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

Page 12: PHAR better Tools

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

Page 13: PHAR better Tools

Anwendungs-Beispiele2

Page 14: PHAR better Tools

Anwendungsbeispiele2

“Standard” PHAR Tools:๏ Testing: phpunit / codecept๏ Analysis: pdepend, phpcpd, phpcs,

phploc, phpmd, …๏ Dependencies: composer, graph-

composer๏ und viele mehr…

Page 15: PHAR better Tools

Anwendungsbeispiele2

DEMO

Page 16: PHAR better Tools

PHARs verteilen & updaten3

Page 17: PHAR better Tools

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)

Page 18: PHAR better Tools

PHARs verteilen & updaten3

Install / Update-Strategien:๏ Self-Hosted๏ GitHub als Download zum Release๏ PhiVE / PHAR.IO

Page 19: PHAR better Tools

VIELEN DANK!

@hollodotme@phpindd

phpind.de

github.com/hollodotmegithub.com/PHPinDD

www.fortuneglobe.com

www.phpug-dresden.de@phpugdd

HOLGERWOLTERSDORF

slides availableon slideshare

Page 20: PHAR better Tools

AppendixALinks / 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