00f100/fcphp-autoload

There is no license information available for the latest version (0.3.1) of this package.

Autoload providers and routes into composer vendor package

0.3.1 2018-08-04 19:01 UTC

README

Package to autoload providers and routes into another composer packages

Build Status codecov Total Downloads

How to install

Composer:

$ composer require 00f100/fcphp-autoload

or add in composer.json

{
    "require": {
        "00f100/fcphp-autoload": "*"
    }
}

How to use

Create my providers.php

<?php

return [
    \path\to\SomeClass::class,
    \path\to\package\Cool::class
];

Create my routes.php

<?php

return [
    'path/to/route' => [
        'post' => 'SiteController@method'
    ]
];

Find content in directory

<?php

use FcPhp\Autoload\Autoload;

/**
 * Method to load path and find match's
 *
 * @param string $pathExpression Directory to find file(s)
 * @param array $fileNameMatch List of filename
 * @param array $extensionMatch List of enable extensions
 * @return void
 */
$autoload = Autoload::getInstance();
$autoload->path(string $pathExpression, array $fileNameMatch, array $extensionMatch);

/*
    Example to find inside composer directory

    ============================================
    Example directory:
    ============================================

    vendor/
        00f100/
            fcphp-di/
                autoload/
                    providers.php
                    prividers.txt
            fcphp-i18n/
            fcphp-provider/
                autoload/
                    routes.php
        doctrine/
            doctrine/
            instructor/
        cake/
            bin/
            cake/
                autoload/
                    providers.php

*/
$autoload->path('vendor/*/*/autoload', ['providers', 'routes'], ['php']);
/*
    ============================================
    Below example match this files:
    ============================================

    vendor/00f100/fcphp-di/autoload/providers.php
    vendor/00f100/fcphp-provider/autoload/routes.php
    vendor/cake/cake/autoload/providers.php
*/

Get content of files

/*
    ============================================
    Get the content using 'get' method
    ============================================
    [
        'path/to/route' => [
            'post' => 'SiteController@method'
        ]
    ]
    $arrayProviders = $autoload->get('providers');

    [
        \path\to\SomeClass,
        \path\to\package\Cool
    ]
    $arrayRoutes = $autoload->get('routes');
*/
/**
 * Method to return autoloaded files
 *
 * @param string $key Filename
 * @return array
 */
$autoload->get(string $fileName);

Triggers

Before Match

This clousure run before match run


$instance->beforeMatch(function(string $pathExpression, array $fileNameMatch, array $extensionMatch) {
    // your code here
});

Before Match Again

This clousure run before match some dir again


$instance->beforeMatchAgain(function(array $paths, array $files, array $extensions, string $path, string $now) {
    // your code here
});

Before Storage

This clousure run before storage file content


$instance->beforeStorage(function(string $file, string $filePath) {
    // your code here
});