Slide 1

Slide 1 text

PHP ARCHIVE Christian Münch / @cmuench 1

Slide 2

Slide 2 text

Was ist ein Phar Archiv? Phar archives are best characterized as a convenient way to group several files into a single file. As such, a phar archive provides a way to distribute a complete PHP application in a single file and run it from that file without the need to extract it to disk. Additionally, phar archives can be executed by PHP as easily as any other file, both on the commandline and from a web server. Phar is kind of like a thumb drive for PHP applications. http://www.php.net/manual/en/intro.phar.php Christian Münch / @cmuench 2

Slide 3

Slide 3 text

Was ist in einer Phar Datei? ein Stub Ein Manifest, welches den Inhalt beschreibt Inhalte Eine Signatur zum Prüfen ob die Datei valide ist (optional) Christian Münch / @cmuench 3

Slide 4

Slide 4 text

Historie PEAR Paket "PHP_Archive" 25 . Januar 2005 Damals aktuelle PHP Version -> 4.3.7 Registrierte phar:// Stream Reiner PHP Code Christian Münch / @cmuench 4

Slide 5

Slide 5 text

Historie / Phar Reloaded 28.03.2007 PECL Package Implementierung in C SPL Integration APC Kompatibilität Damals aktuelle PHP Version 5.2 Christian Münch / @cmuench 5

Slide 6

Slide 6 text

Status Quo Ab PHP 5.3 (30. Juni 2009) ist das Phar Modul in der Standard Distribution enthalten. Christian Münch / @cmuench 6

Slide 7

Slide 7 text

Datei Formate Phar Tar Zip Bzip Bzip2 Christian Münch / @cmuench 7

Slide 8

Slide 8 text

Feature Matrix Christian Münch / @cmuench 8

Slide 9

Slide 9 text

Phar Datei erstellen $phar = new Phar('test.phar', 0, 'test.phar'); $phar->buildFromIterator( new RecursiveIteratorIterator( new RecursiveDirectoryIterator('src') ), '.' ); $phar->setStub( $phar->createDefaultStub( 'src/cli/index.php', 'src/web/index.php' ) ); Christian Münch / @cmuench 9

Slide 10

Slide 10 text

Include

Slide 11

Slide 11 text

CLI Stub

Slide 12

Slide 12 text

Metadaten getMetadata()); $pharInfo->setMetadata(array('Created at' => 'PHPUG Rheinhessen')); } catch (\Exception $e) { echo $e->getMessage(); } Christian Münch / @cmuench 12

Slide 13

Slide 13 text

Metadaten (pro Datei) getContent()); var_dump($pharFileInfo->getMetadata()); var_dump($pharFileInfo->isCompressed()); $pharFileInfo->setMetadata(array('Created at' => 'PHPUG Rheinhessen')); } catch (\Exception $e) { echo $e->getMessage(); } Christian Münch / @cmuench 13

Slide 14

Slide 14 text

Komfortables Paketieren Box Phing Christian Münch / @cmuench 14

Slide 15

Slide 15 text

Box http://box-project.org { "chmod": "0755", "directories": ["src"], "alias": "test.phar", "output": "test.phar", "stub": "src/cli/index.php" } Christian Münch / @cmuench 15

Slide 16

Slide 16 text

Phing http://www.phing.info/ Christian Münch / @cmuench 16

Slide 17

Slide 17 text

Phing build.xml Christian Münch / @cmuench 17

Slide 18

Slide 18 text

Praxis Beispiele Composer n98-magerun pestl PHPUnit Christian Münch / @cmuench 18

Slide 19

Slide 19 text

Danke! Christian Münch / @cmuench 19