Giter Club home page Giter Club logo

yii2-phar's Introduction

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.