What are the good and the bad things about the three supported file formats in the phar extension? This table attempts to address that question.
| Feature | Phar | Tar | Zip | 
|---|---|---|---|
| Standard File Format | No | Yes | Yes | 
| Can be executed without the Phar Extension [1] | Yes | No | No | 
| Per-file compression | Yes | No | Yes | 
| Whole-archive compression | Yes | Yes | No | 
| Whole-archive signature validation | Yes | Yes | Yes | 
| Web-specific application support | Yes | Yes | Yes | 
| Per-file Meta-data | Yes | Yes | Yes | 
| Whole-Archive Meta-data | Yes | Yes | Yes | 
| Archive creation/modification [2] | Yes | Yes | Yes | 
| Full support for all stream wrapper functions | Yes | Yes | Yes | 
| Can be created/modified even if phar.readonly=1 [3] | No | Yes | Yes | 
    [1] PHP can only directly access the contents of a Phar archive
    without the Phar extension if it is using a stub
    that extracts the contents of the phar archive.  The stub
    created by Phar::createDefaultStub() extracts
    the phar archive and runs its contents from a temporary directory
    if no phar extension is found.
    
    [2] All write access requires phar.readonly to
    be disabled in php.ini or on the command-line directly.
    
    [3] Only tar and zip archives without .phar in their
    filename and without an executable stub .phar/stub.php
    can be created if phar.readonly=1.
    
