xervice/kernel

2.0.0 2018-08-22 09:59 UTC

This package is auto-updated.

Last update: 2024-09-29 04:36:58 UTC


README

Scrutinizer Code Quality Code Coverage

用于通过服务扩展应用程序的内核。

安装

composer require xervice/kernel

配置

您可以通过扩展应用程序中的依赖提供者将服务添加到内核。

<?php

namespace App\Kernel;

use Xervice\Kernel\KernelDependencyProvider as XerviceKernelDependencyProvider;

class KernelDependencyProvider extends XerviceKernelDependencyProvider
{
    /**
     * Service classes with key as service name
     * e.g.
     * myService => myservice::class
     *
     * @return array
     */
    protected function getServiceList(): array
    {
        return [
            'routing' => MyRoutingService::class
        ];
    }
}

用法

您可以使用内核启动应用程序并运行所有依赖的引导程序。

use Xervice\Core\Locator\Locator;


$locator = Locator::getInstance();
$kernel = $locator->kernel()->facade();

try {
    $kernel->boot();
    $kernel->run();
} catch (\Exception $e) {
    $locator->exceptionHandler()->facade()->handleException($e);
}

自有服务

要创建自有服务,您必须实现 BootInterface 和/或 ExecuteInterface。

示例

<?php

namespace App\MyModule\Business\Kernel;

use Xervice\Kernel\Business\Model\Service\ServiceProviderInterface;
use Xervice\Kernel\Business\Plugin\BootInterface;
use Xervice\Kernel\Business\Plugin\ExecuteInterface;

class MyService implements BootInterface, ExecuteInterface
{
    /**
     * @param \Xervice\Kernel\Business\Model\Service\ServiceProviderInterface $serviceProvider
     */
    public function boot(ServiceProviderInterface $serviceProvider): void
    {
        // boot something
    }

    /**
     * @param \Xervice\Kernel\Business\Model\Service\ServiceProviderInterface $serviceProvider
     */
    public function execute(ServiceProviderInterface $serviceProvider): void
    {
        // execute something
    }

}