To install via composer (http://getcomposer.org/), place the following in your composer.json file:
{
"require": {
"barbosa/packager": "dev-master"
}
}
or download package from github.com:
http://github.com/barbosa89/packager
Consider the following folder structure:
/project
/src
MainClass.php
Router.php
TextProcessing.php
Request.php
services.php
/Facades
Router.php
TextProcessing.php
Request.php
The services.php file, returns an array with an alias and the corresponding namespace and the following sintax:
<?php
/**
* file: services.php
*/
return [
'router' => Some\Namespace\Router::class,
'text' => Some\Namespace\TextProcessing::class,
'request' => Some\Namespace\Request::class
];
In the MainClass.php file, invoke to AliasLoader::setAliases method:
<?php
namespace Some\Namespace;
use Barbosa\Packager\AliasLoader;
class MainClass
{
public function __construct
{
$aliases = require 'services.php';
AliasLoader::setAliases($aliases);
}
}
The AliasLoader::setAliases method used to record the namespaces and can be called from anywhere in the application.
The facades classes must be created in the folder Facades:
<?php
namespace Some\Namespace\Facade;
use Barbosa\Packager\AccessFacade;
use Barbosa\Packager\FacadeInterface;
class Router extends AccessFacade implements FacadeInterface
{
public static function getServiceName()
{
return 'router';
}
}
For each service or class, it must be created a facade.
Now you can invoke static style services from anywhere in the application, just by using the namespace of the facade. Example:
<?php
namespace Some\Namespace;
use Barbosa\Packager\AliasLoader;
use Some\Namespace\Facades\Request
class MainClass
{
public function __construct
{
$aliases = require 'services.php';
AliasLoader::setAliases($aliases);
}
public function resolveUri($uri)
{
return Request::parseUri($uri);
}
}
- www.sitepoint.com
- Inspired by Laravel: Facade class
- Check for open issues or open a new issue to start a discussion around a bug or feature.
- Fork the repository on GitHub to start making your changes.
- Write one or more tests for the new feature or that expose the bug.
- Make code changes to implement the feature or fix the bug.
- Send a pull request to get your changes merged and published.
Thanks...