Skip to content
This repository has been archived by the owner on Sep 30, 2019. It is now read-only.

index0h/yii2-phar

Repository files navigation

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