diff --git a/src/Contracts/ServiceProviderContract.php b/src/Contracts/ServiceProviderContract.php new file mode 100644 index 0000000..e214263 --- /dev/null +++ b/src/Contracts/ServiceProviderContract.php @@ -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); +} \ No newline at end of file diff --git a/src/Kernel.php b/src/Kernel.php new file mode 100644 index 0000000..80d4686 --- /dev/null +++ b/src/Kernel.php @@ -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); + } + + +} \ No newline at end of file diff --git a/src/Providers/EncodeServiceProvider.php b/src/Providers/EncodeServiceProvider.php new file mode 100644 index 0000000..ae769f2 --- /dev/null +++ b/src/Providers/EncodeServiceProvider.php @@ -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(); + }); + } +} \ No newline at end of file diff --git a/src/QueryList.php b/src/QueryList.php index 5ac626d..4f17075 100644 --- a/src/QueryList.php +++ b/src/QueryList.php @@ -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 */ diff --git a/src/Services/EncodeService.php b/src/Services/EncodeService.php new file mode 100644 index 0000000..fa16643 --- /dev/null +++ b/src/Services/EncodeService.php @@ -0,0 +1,13 @@ +<?php +/** + * Created by PhpStorm. + * User: Jaeger <JaegerCode@gmail.com> + * Date: 2017/9/20 + */ + +namespace QL\Services; + +class EncodeService +{ + +} \ No newline at end of file