Symfony bundle

Пользователь

от sniperweek , в категории: PHP , год назад

Можно ли проверить bundle для symfony без его установки в проект? Если да то как, ведь в нем нет kernel и bin/console


Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jaren , год назад

@sniperweek Попробуйте что то вроде такого:

  • Создайте новый проект Symfony с помощью команды symfony new myproject --full.
  • Установите bundle в новый проект, используя Composer: composer require vendor/bundle-name.
  • Создайте новый файл test.php и подключите в нем autoload-файл из вашего проекта:
1
2
3
<?php

require __DIR__.'/myproject/vendor/autoload.php';


  • Инициализируйте объект ядра Symfony:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php

use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class TestKernel extends Kernel
{
    public function registerBundles(): iterable
    {
        yield new Symfony\Bundle\FrameworkBundle\FrameworkBundle();
        yield new Vendor\BundleName\BundleName();
    }

    public function getCacheDir(): string
    {
        return __DIR__.'/cache/'.spl_object_hash($this);
    }

    public function getLogDir(): string
    {
        return __DIR__.'/log';
    }

    public function registerContainerConfiguration(LoaderInterface $loader): void
    {
        $loader->load(__DIR__.'/myproject/config/packages/*.yaml');
    }

    public function boot(): void
    {
        parent::boot();
    }
}

$kernel = new TestKernel('test', true);
$kernel->boot();


В этом коде мы создали класс TestKernel, который наследует класс Symfony\Component\HttpKernel\Kernel и содержит необходимую конфигурацию для загрузки bundle. В registerBundles() мы регистрируем ядро Symfony и ваш bundle, а в registerContainerConfiguration() загружаем конфигурационные файлы проекта.

  • Используйте объект ядра для проверки вашего bundle:
1
2
3
4
<?php

$bundle = $kernel->getContainer()->get('vendor_bundle_name');
// Здесь проверяем ваш bundle


Обратите внимание, что некоторые bundle могут требовать зависимостей или настроек, которые необходимо установить или сконфигурировать до использования.