index0h/yii2-phar Phar builder based on Yii2

modulebuildpharyii2-pharyii-module

yii2-phar

Build Status Latest Stable Version Dependency Status Scrutinizer Quality Score Code Coverage Total Downloads License

This module provides console interface for building PHAR archives for Yii2 applications.

Installation

The preferred way to install this extension is through composer.

php composer.phar require --prefer-dist index0h/yii2-phar "*"

or add line to require section of composer.json

"index0h/yii2-phar": "*"

Standalone usage

  • Installation
php composer.phar global require index0h/yii2-phar:*
  • Running
yii2-phar
# Or with external configuration
yii2-phar phar/build myConfiguration.php

Usage

Once module is installed, modify your application configuration as follows:

return [
    'modules' => [
        'phar' => 'index0h\\phar\\Module',
        ...
    ],
    ...
];

You can access to yii2-phar module though console:

yii phar/build

Options

  • compress - Array of compress algorithms, \Phar::GZ, \Phar::BZ2. Creates compressed files of main phar.
  • files - List of files to compile.
  • folders - List of directories to compile.
  • ignore - List of regexp patterns that must be ignored on build. That means if any file will match to any of patterns - it will be ignored.
  • path - Path to phar file save.
  • pharName - Phar name.
  • signature - One of Phar signature algorithms. If it is Phar::OPENSSL - openSSLPrivateKeyAlias is required.
  • openSSLPrivateKeyAlias - Alias to OpenSSL certificate, should be on \Phar::OPENSSL signature set.
  • stub - Alias to stub file, if false - will not be set.

Components

Components - php classes for files modifications in phar archives. For example: remove all whitespaces from php code. Components configuration is just like yii Application components, for example:

return [
    'modules' => [
        'phar' => [
            'class' => 'index0h\\phar\\Module',
            'components' => [
                'fixer' => [
                    'class' => 'index0h\\phar\\components\\php\\Fixer',
                    'match' => '/.*\.php/'
                ]
            ]
        ]
        ...
    ],
    ...
];

Available components

Fixer

Fixer changes realpath functions in files that doesn't work in phar.

  • match - List of regexp for files that must be modified.
  • replace - Array of regexp for [from => to] for modifications in files.

Minimize

Removes all whitespaces form php files by php_strip_whitespace.

  • match - List of regexp for files that must be modified.

Writing own component

Simply create class that extends index0h\phar\base\Component and implement processFile method.

For example minimize component:

namespace index0h\phar\components\php;

use index0h\phar\base\Component;
use index0h\phar\base\FileEvent;

/**
 * Removes whitespace and comments from php files.
 */
class Minimize extends Component
{
    /**
     * For all php files without suffix Controller (because help command parses comments).
     */
    protected $match = ['/(?<!Controller)\.php/us'];

    /**
     * Modification of file.
     *
     * @param FileEvent $event Event with file information.
     */
    public function processFile(FileEvent $event)
    {
        file_put_contents($event->realPath, php_strip_whitespace($event->realPath));
    }
}

FileEvent structure

  • realPath - path to temporary file.
  • relativePath - path in phar file.

Testing

Run tests from IDE (example for PhpStorm)

  • Select Run/Debug Configuration -> Edit Configurations
  • Select Add New Configuration -> PHP Script
  • Type:
    • File: /path/to/yii2-phar/.test.php
    • Arguments run: run --coverage --html
  • OK

Run tests from IDE (example for PhpStorm) inside phar archive

  • Select Run/Debug Configuration -> Edit Configurations
  • Select Add New Configuration -> PHP Script
  • Type:
    • File: /path/to/yii2-phar/.test.phar.php
    • Arguments run: run --no-exit
  • OK

Run tests from console

make test-all

Changelog

yii2-phar change log

0.0.4

25 create russian readme

24 Add filemtime and is_dir realisations

0.0.3

21 move files to src directory enhancement

20 add more badges from https://poser.pugx.org/ enhancement

19 remove coveralls and add scrutinizer enhancement

18 add test environment for run inside phar

17 fix composer.json bin section bug

0.0.2

  • Full refactoring of iterators
  • Full refactoring of tests, now BDD
  • Refactoring of modificators, now - components
  • Fix travis tests
  • 13 by scrutinizer-ci fix

  • 14 by scrutinizer-ci fix

  • 15 by scrutinizer-ci fix

  • fix PSR-2 CS
  • 8 Add console runner

  • updated composer.json
  • small namespace fixes

Statistics

Downloads
GitHub Stars
GitHub Forks

Releases

Comments



0.0.3 is the latest of 3 releases



MIT license
Stats
7 github stars & 3 github forks
0 downloads in the last day
0 downloads in the last 30 days
49 total downloads