PHP code example of rafaeltovar / php-service-manager
1. Go to this page and download the library: Download rafaeltovar/php-service-manager library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rafaeltovar / php-service-manager example snippets
// myproject.php
use MyServiceAProvider;
$serviceContainer = new \ServiceManager\ServiceContainer(
[MyServiceAProvider::class]
);
// MyServiceA.php
class MyServiceA
{
public function test()
{
echo "Working.";
}
}
// MyServiceAProvider.php
class MyServiceAProvider
extends \ServiceManager\ServiceProvider
{
/**
* This method return the service class name (mandatory)
**/
public function getServiceType() : string
{
return MyServiceA::class;
}
/**
* This method return the identification of the service
* into Service Container (mandatory)
**/
public function getServiceId(): string
{
return "my-service-a";
}
/**
* This method return the service (mandatory)
**/
public function getService()
{
return new MyServiceA();
}
}
// myproject.php
use MyServiceDebugProvider,
MyServiceAProvider;
use MyCustomArguments;
//...
$serviceContainer = new \ServiceManager\ServiceContainer(
[
MyServiceAProvider::class,
MyServiceDebugProvider::class
],
[],
new MyCustomArguments($myLogger)
);
// MyCustomArguments.php
class MyCustomArguments
implements \ServiceManager\ServiceProviderArgumentsInterface
{
protected $logger;
public function __construct(\Psr\Log\LoggerInterface $logger)
{
$this->logger = $logger;
}
public function getLogger() : \Psr\Log\LoggerInterface
{
return $this->logger;
}
}
// MyServiceDebug.php
class MyServiceDebug
{
protected $logger;
public function __construct(\Psr\Log\LoggerInterface $logger)
{
$this->logger = $logger;
}
public function write(string $text)
{
$this->logger->debug($text);
}
}
// MyServiceDebugProvider.php
class MyServiceDebugProvider
extends \ServiceManager\ServiceProvider
{
public function getServiceType() : string
{
return MyServiceDebug::class;
}
public function getServiceId(): string
{
return "debug";
}
public function getService()
{
$logger = $this->getProviderArguments()->getLogger();
return new MyServiceDebug($logger);
}
}
$serviceContainer->get("my-service-a")->test();
// MyController.php
class MyController
{
protected $a;
public function __construct(MyServiceA $a)
{
$this->a = $a;
}
public function test()
{
$this->a->test();
}
}
use MyController;
//...
$myCtrl = $serviceContainer->build(MyController::class);
$myCtrl->test();
// MyController.php
use ServiceManager\ServiceContainer,
ServiceManager\ControllerBuilderCreateInterface;
class MyController
implements ControllerBuilderCreateInterface
{
protected $public;
public function __construct(string $publicFolder)
{
$this->public = $publicFolder;
}
public static function create(ServiceContainer $services)
{
return new MyController(
$services->get('config')->get("PUBLIC_FOLDER")
);
}
}
use MyController;
//...
$myCtrl = $serviceContainer->build(MyController::class);
// myproject.php
use MyServiceDebugProvider,
MyServiceAProvider;
use MyCustomArguments;
//...
$serviceContainer = new \ServiceManager\ServiceContainer(
[
MyLoggerProvider::class,
],
[ // aliases
// interface => service id
\Psr\Log\LoggerInterface::class => "logger"
]
);
// MyServiceDebugProvider.php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
class MyLoggerProvider
extends \ServiceManager\ServiceProvider
{
public function getServiceType() : string
{
return Logger::class;
}
public function getServiceId(): string
{
return "logger";
}
public function getService()
{
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
return $log;
}
}
// MyController.php
class MyController
{
protected $logger;
public function __construct(\Psr\Log\LoggerInterface $logger)
{
$this->logger = $logger; // this logger will be \Monolog\Logger
}
// ...
}
use MyController;
//...
$myCtrl = $serviceContainer->build(MyController::class);
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.