Download .zip |
Info | Documentation | View files (6) | Download .zip | Reputation | Support forum | Blog | Links |
Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
2020-03-02 (3 days ago) | Not yet rated by the users | Total: 2 This week: 2 | All time: 9,877 This week: 186 |
Version | License | PHP version | Categories | |||
manager 1.0 | The PHP License | 7 | Language, Design Patterns, PHP 7 |
Description | Author | |
This package can be used to manage the access to multiple driver classes |
|
<p align="center"> <img src="https://i.ibb.co/vq97y2t/laravel-manager.jpg" width="300"> </p>
<p align="center"> <a href="https://travis-ci.org/DeGraciaMathieu/manager"><img src="https://travis-ci.org/DeGraciaMathieu/manager.svg?branch=master" alt="Build Status"></a> <a href="https://scrutinizer-ci.com/g/DeGraciaMathieu/manager/?branch=master"><img src="https://scrutinizer-ci.com/g/DeGraciaMathieu/manager/badges/coverage.png?b=master" alt="Code Coverage"></a> <a href="https://packagist.org/packages/degraciamathieu/manager"><img src="https://img.shields.io/packagist/v/degraciamathieu/manager.svg?style=flat-square" alt="Latest Version on Packagist"></a> <a href='https://packagist.org/packages/degraciamathieu/manager'><img src='https://img.shields.io/packagist/dt/degraciamathieu/manager.svg?style=flat-square' /></a> </p>
Implementation of the Manager pattern existing in Laravel framework.
composer require degraciamathieu/manager
This package offers an abstract class Manager
which needs to be extended to implement the creation of various Driver classes.
use DeGraciaMathieu/Manager/Manager;
class LoggerManager extends Manager {
public function createMonologDriver(): LoggerDriver
{
return new MonologDriver();
}
public function createMockDriver(): LoggerDriver
{
return new MockDriver();
}
public function getDefaultDriver()
{
return 'monolog';
}
}
The getDefaultDriver
method should also be implemented in your class Manager
, in order to determine which driver has to be created by default. It's also the right spot to determine the default driver from an environment variable, or a configuration.
public function getDefaultDriver()
{
return env('MANAGER_LOGGER_DEFAULT_DRIVER');
}
In a matter of consistency, all Driver creations (createClientDriver
, createMockDriver
...) should return a class which itself implements the same interface, the LoggerDriver contract in this here case.
interface LoggerDriver {
public function doAnything();
}
class MonologDriver implements LoggerDriver {
public function doAnything()
{
echo 'i do anything from the monolog driver';
}
}
class MockDriver implements LoggerDriver {
public function doAnything()
{
echo 'i do anything from the mock driver';
}
}
From now on, it's possible to use your Manager
, either by using the default driver:
(new LoggerManager())->doAnything(); // i do anything from the monolog driver
Or by simply specify the driver which needs to be instantiated.
(new LoggerManager())->driver('monolog')->doAnything(); // i do anything from the monolog driver
(new LoggerManager())->driver('mock')->doAnything(); // i do anything from the mock driver
Usage example of the pattern manager in a Laravel project.
Files |
File | Role | Description | ||
---|---|---|---|---|
src (1 file) | ||||
tests (1 file) | ||||
.travis.yml | Data | Auxiliary data | ||
composer.json | Data | Auxiliary data | ||
phpunit.xml | Data | Auxiliary data | ||
README.md | Doc. | Documentation |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
100% |
|
|
Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.