| Recommend this page to a friend! |
| Info | Documentation | Reputation | Support forum | Blog | Links |
| Ratings | Unique User Downloads | Download Rankings | ||||
| Not yet rated by the users | Total: 88 | All time: 9,993 This week: 560 | ||||
| Version | License | PHP version | Categories | |||
| manager 1.0 | The PHP License | 7 | Language, Design Patterns, PHP 7 |
<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.
| File | Role | Description | ||
|---|---|---|---|---|
| Data | Auxiliary data | |||
| Data | Auxiliary data | |||
| Data | Auxiliary data | |||
| Doc. | Documentation | |||
| The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. |
| 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.