Phar::buildFromIterator

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::buildFromIteratorConstruct a phar archive from an iterator

Beschreibung

public Phar::buildFromIterator(Traversable $iterator, ?string $baseDirectory = null): array

Hinweis:

Diese Methode des Phar-Objekts funktioniert nur wenn die php.ini-Einstellung phar.readonly auf 0 gesetzt ist, sonst wird eine PharException geworfen.

Populate a phar archive from an iterator. Two styles of iterators are supported, iterators that map the filename within the phar to the name of a file on disk, and iterators like DirectoryIterator that return SplFileInfo objects. For iterators that return SplFileInfo objects, the second parameter is required.

Parameter-Liste

iterator

Any iterator that either associatively maps phar file to location or returns SplFileInfo objects

baseDirectory

For iterators that return SplFileInfo objects, the portion of each file's full path to remove when adding to the phar archive

Rückgabewerte

Phar::buildFromIterator() returns an associative array mapping internal path of file to the full path of the file on the filesystem.

Fehler/Exceptions

This method returns UnexpectedValueException when the iterator returns incorrect values, such as an integer key instead of a string, a BadMethodCallException when an SplFileInfo-based iterator is passed without a baseDirectory parameter, or a PharException if there were errors saving the phar archive.

Changelog

Version Beschreibung
8.1.0 Phar::buildFromIterator() no longer returns false.
8.0.0 baseDirectory is now nullable.

Beispiele

Beispiel #1 A Phar::buildFromIterator() with SplFileInfo

For most phar archives, the archive will reflect an actual directory layout, and the second style is the most useful. For instance, to create a phar archive containing the files in this sample directory layout:

/path/to/project/
                 config/
                        dist.xml
                        debug.xml
                 lib/
                     file1.php
                     file2.php
                 src/
                     processthing.php
                 www/
                     index.php
                 cli/
                     index.php

This code could be used to add these files to the "project.phar" phar archive:

<?php
// create with alias "project.phar"
$phar = new Phar('project.phar'0'project.phar');
$phar->buildFromIterator(
    new 
RecursiveIteratorIterator(
     new 
RecursiveDirectoryIterator('/path/to/project')),
    
'/path/to/project');
$phar->setStub($phar->createDefaultStub('cli/index.php''www/index.php'));
?>

The file project.phar can then be used immediately. Phar::buildFromIterator() does not set values such as compression, metadata, and this can be done after creating the phar archive.

As an interesting note, Phar::buildFromIterator() can also be used to copy the contents of an existing phar archive, as the Phar object descends from DirectoryIterator:

<?php
// create with alias "project.phar"
$phar = new Phar('project.phar'0'project.phar');
$phar->buildFromIterator(
    new 
RecursiveIteratorIterator(
     new 
Phar('/path/to/anotherphar.phar')),
    
'phar:///path/to/anotherphar.phar/path/to/project');
$phar->setStub($phar->createDefaultStub('cli/index.php''www/index.php'));
?>

Beispiel #2 A Phar::buildFromIterator() with other iterators

The second form of the iterator can be used with any iterator that returns a key => value mapping, such as an ArrayIterator:

<?php
// create with alias "project.phar"
$phar = new Phar('project.phar'0'project.phar');
$phar->buildFromIterator(
    new 
ArrayIterator(
     array(
        
'internal/file.php' => dirname(__FILE__) . '/somefile.php',
        
'another/file.jpg' => fopen('/path/to/bigfile.jpg''rb'),
     )));
$phar->setStub($phar->createDefaultStub('cli/index.php''www/index.php'));
?>

Siehe auch

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Was genau bedeutet "Vibe Coding"? Ein tiefgehender Blick für Entwickler

In der Welt der Softwareentwicklung gibt es unzählige Wege, wie man an ein Projekt herangeht. Manche schwören auf strikte Planung, andere auf bewährte Algorithmen und wieder andere lassen sich von etwas ganz anderem leiten: ihrem Gefühl. ...

admin

Autor : admin
Kategorie: Software & Web-Development

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Hilfe mit PHP und MySQL

Having trouble connecting to my MySQL database with PHP! Anyone else faced this? I did; turns out, I had the wrong port number in my connection st ...

Geschrieben von JohnTaylor am 24.05.2025 08:57:33
Forum: PHP Developer Forum
Grid und Pos geht nicht ...

Silder1 soll in Reihe 5 und Spalte 2 bis 6 einnehmen. Silder2 soll in Reihe 6 und Spalte 2 bis 5 einnehmen. https://handicap-fan.com/test.html w ...

Geschrieben von tomycat am 23.05.2025 14:12:36
Forum: PHP Developer Forum
Grid und Pos geht nicht ...

Silder 1 soll sich von Grid Spalte 2 bis 5 und Spalte 5 einnehmen, was muss ich ändern? Silder 2 soll sich von Grid Spalte 2 bis 4 und Spalte 6 e ...

Geschrieben von tomycat am 23.05.2025 14:09:48
Forum: PHP Developer Forum
How Clean SQL Architecture Saves You From Technical Debt

Once I realized I could offload repeat logic to SQL views, my PHP Infinite Craft​ (https://infinitecraftrecipes.io) code started looking more li ...

Geschrieben von bekeanloinse56 am 20.05.2025 05:16:28
Forum: SQL / Datenbanken