prbundle / symfony-bundle
Just a small bundle
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=8.0
- symfony/framework-bundle: ^5.4 || ^6.0
- symfony/serializer: ^5.4 || ^6.0
This package is auto-updated.
Last update: 2025-06-13 15:44:35 UTC
README
SymfonyBundle
— это Symfony бандл, предоставляющий кастомный нормализатор для работы с объектами
Процесс разработки
Ниже будут описаны все этапы разработки пакета
1. Создание директории
mkdir symfony-bundle
cd symfony-bundle
2. Инициализация composer
composer init
На этом этапе задаем данные нашего пакета: name; description; author; minimum stability (допустимые версии, используемые при разработке); package type (мы выбираем symfony-bundle, чтобы symfony автоматически подключался к нашему пакету); license.
3. Создание файловой структуры
mkdir -p src/DependencyInjection src/Serializer/Normalizer src/Resources/config
Создаются папки DependencyInjection (для конфигурации бандла и регистрации сервисов); Normalizer (папка, в которой содержится сам нормализатор); config (в ней будет находиться services.yaml, в котором содержится настройка сервисов, параметров и маршрутов).
4. Создание основного класса бандла
Создаем файл с классом
touch src/SymfonyBundle.php
Создаем внутри него сам класс
<?php
namespace PrBundle\SymfonyBundle;
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use PrBundle\SymfonyBundle\DependencyInjection\MyBundleExtension;
class PrSymfonyBundle extends Bundle
{
public function getContainerExtension(): ?ExtensionInterface
{
return new MyBundleExtension();
}
}
5. Создание файла расширений
Этот файл будет нужен для конфигурации бандла и регистрации сервисов
touch src/DependencyInjection/PrBundleExtension.php
Содержание самого файла:
<?php
namespace PrBundle\SymfonyBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
class MyBundleExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yaml');
}
}
Он загружает services.yaml из Resources/config и регистрирует сервисы в контейнере Symfony.
6. Создание конфигурационного файла сервисов
Теперь создаем этот файл services.yaml:
touch src/Resources/config/services.yaml
Файл предназначен для регистрации нормалайзера как сервиса и добавления его в serializer Symfony
services:
PrBundle\SymfonyBundle\Serializer\Normalizer\Normalizer:
tags: ['serializer.normalizer']
Таким образом нормализатор интегрируется в общую систему Symfony Serializer и будет использоваться вместе с остальными как один контейнер.
7. Добавление нормализатора
Теперь создаем файл с нормализатором, который будет использоваться в проекте
Создаем файл Normalizer.php
touch src/Serializer/Normalizer/Normalizer.php
В нем будет содержаться код кастомного нормалайзера.
8. Создание репозитория на GitHub
Далее, для публикации пакета, необходимо загрузить его на GitHub
git init - создание локального репозитория Git в текущей директории git add . - подготовка всех файлов текущей директории к коммиту git commit -m "Initial commit" - создание первого коммита git remote add origin https://github.com/ex1edd/symfony-bundle.git - подключение удаленного репозитория git push -u origin main - отправка закоммиченных файлов в репозиторий GitHub
9. Публикация на Packagist
Теперь переходим на packagist.org и публикуем репозиторий с GitHub
После этого бандл будет готов к установке через Composer.
Требования
- PHP >= 8.0
- Symfony FrameworkBundle 5.4 или выше
- Symfony Serializer 5.4 или выше
Установка
Установите бандл с помощью Composer
В вашем проекте Symfony выполните следующую команду для установки бандла:
composer require prbundle/symfony-bundle
После того как вы выполнили команду composer require, composer автоматически загрузит и установит все необходимые зависимости, включая бандл.
Подключение бандла в Symfony
Для Symfony 4 и выше бандл будет автоматически активирован после установки через Composer. Вам не нужно ничего дополнительно настраивать.
Если вы используете Symfony 3 или ниже, вам необходимо вручную зарегистрировать бандл в файле config/bundles.php
:
// config/bundles.php return [ // другие бандлы PrBundle\SymfonyBundle\PrSymfonyBundle::class => ['all' => true], ];
Для старых версий Symfony
Вам может понадобиться вручную зарегистрировать бандл в app/AppKernel.php (вместо config/bundles.php):
// app/AppKernel.php public function registerBundles() { $bundles = [ // другие бандлы new PrBundle\SymfonyBundle\PrSymfonyBundle(), ]; return $bundles; }
Использование бандла
Пример использования
use App\Serializer\Normalizer\Normalizer;
$normalizer = new Normalizer();
// Пример использования normalize
$normalizedData = $normalizer->normalize($object);
Структура проекта
Файловая структура выглядит следующим образом:
/src
/DependencyInjection
BundleExtension.php - файл для регистрации зависимостей
/Resources
/config
services.yaml - регистрация сервисов
/Serializer
/Normalizer
Normalizer.php - нормалайзер, необходимый в проекте
SymfonyBundle.php - главный файл бандла
/composer.json
После того как вы установите бандл с помощью Composer, он будет находиться в папке vendor/prbundle/symfonybundle/
/some-project
/bin
/config
...
/vendor
prbundle/symfonybundle/ - папка с бандлом