00f100/fcphp-autoload

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

Autoload providers and routes into composer vendor package

0.2.0 2018-06-16 01:11 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
});