add service provider

This commit is contained in:
Jaeger 2017-09-21 02:20:28 +08:00
parent 02fe5a7f9e
commit 43d8f71678
5 changed files with 99 additions and 2 deletions

View File

@ -0,0 +1,15 @@
<?php
/**
* Created by PhpStorm.
* User: Jaeger <JaegerCode@gmail.com>
* Date: 2017/9/20
*/
namespace QL\Contracts;
use QL\Kernel;
interface ServiceProviderContract
{
public function register(Kernel $kernel);
}

47
src/Kernel.php Normal file
View File

@ -0,0 +1,47 @@
<?php
/**
* Created by PhpStorm.
* User: Jaeger <JaegerCode@gmail.com>
* Date: 2017/9/21
*/
namespace QL;
use QL\Contracts\ServiceProviderContract;
use QL\Providers\EncodeServiceProvider;
class Kernel
{
protected $providers = [
EncodeServiceProvider::class
];
protected $binds = [];
public function bootstrap()
{
$this->registerProviders();
return $this;
}
public function registerProviders()
{
foreach ($this->providers as $provider) {
$this->register(new $provider());
}
}
public function bind($name, $provider)
{
$this->binds[$name] = value($provider);
}
private function register(ServiceProviderContract $instance)
{
$instance->register($this);
}
}

View File

@ -0,0 +1,22 @@
<?php
/**
* Created by PhpStorm.
* User: Jaeger <JaegerCode@gmail.com>
* Date: 2017/9/20
*/
namespace QL\Providers;
use QL\Contracts\ServiceProviderContract;
use QL\Kernel;
use QL\Services\EncodeService;
class EncodeServiceProvider implements ServiceProviderContract
{
public function register(Kernel $kernel)
{
$kernel->bind('encoder',function (){
return new EncodeService();
});
}
}

View File

@ -21,16 +21,16 @@ class QueryList
protected $document;
protected $rules;
protected $range = null;
protected $encoder;
protected $kernel;
/**
* QueryList constructor.
*/
public function __construct()
{
$this->kernel = (new Kernel())->bootstrap();
}
/**
* @return mixed
*/

View File

@ -0,0 +1,13 @@
<?php
/**
* Created by PhpStorm.
* User: Jaeger <JaegerCode@gmail.com>
* Date: 2017/9/20
*/
namespace QL\Services;
class EncodeService
{
}