Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 3.4微内核定制服务_Symfony_Symfony 3.4 - Fatal编程技术网

Symfony 3.4微内核定制服务

Symfony 3.4微内核定制服务,symfony,symfony-3.4,Symfony,Symfony 3.4,我想知道是否可以通过configureContainer方法直接从AppKernel类在symfony 3.4微内核应用程序中注册自定义服务,而不是从service.yml文件加载所有服务 可能通过ContainerBuilder loadFromExtension方法 ... class AppKernel extends Kernel { use MicroKernelTrait; public function registerBundles() {

我想知道是否可以通过configureContainer方法直接从AppKernel类在symfony 3.4微内核应用程序中注册自定义服务,而不是从service.yml文件加载所有服务

可能通过ContainerBuilder loadFromExtension方法

...

class AppKernel extends Kernel
{
    use MicroKernelTrait;

    public function registerBundles()
    {
       ...
    }

   protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config/config.yml');

        $c->loadFromExtension('custom_service', [
            ...
        ]);
    }

   ...
}
工作示例:

<?php

use App\LoremIpsum;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Routing\RouteCollectionBuilder;

require_once __DIR__ . '/../vendor/autoload.php';

class AppKernel extends Kernel {
    use MicroKernelTrait;

    public function registerBundles() {
        return [
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
        ];
    }

    protected function configureRoutes(RouteCollectionBuilder $routes) {
        $routes->add('/', 'kernel:exampleAction');
    }

    protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) {
        $c->loadFromExtension('framework', [
            'secret' => 'r0tf1.XD',
        ]);

        $c->register(LoremIpsum::class)->setArguments([123, 'ABC'])->setPublic(true);
    }

    public function exampleAction() {
        $obj = $this->getContainer()->get(LoremIpsum::class);
        return Response::create((string)$obj);
    }
}

$kernel   = new AppKernel('dev', true);
$request  = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
另见: