PHPackages                             popo/symfony-bridge - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. popo/symfony-bridge

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

popo/symfony-bridge
===================

Symfony bundle for POPO generator

1.0.1(2y ago)13MITPHP

Since Aug 1Pushed 2y ago1 watchersCompare

[ Source](https://github.com/oliwierptak/popo-symfony-bridge)[ Packagist](https://packagist.org/packages/popo/symfony-bridge)[ RSS](/packages/popo-symfony-bridge/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (6)Versions (3)Used By (0)

POPO Symfony-Bridge
===================

[](#popo-symfony-bridge)

[![Build and run tests](https://github.com/oliwierptak/popo-symfony-bridge/actions/workflows/main.yml/badge.svg)](https://github.com/oliwierptak/popo-symfony-bridge/actions/workflows/main.yml)

Symfony bundle for [POPO Generator](https://github.com/oliwierptak/popo).

Installation
------------

[](#installation)

```
composer require popo/symfony-bridge --dev

```

Setup
-----

[](#setup)

Create `config/packages/popo.yaml`, and setup location of POPO schema files (e.g. `config/packages/popo`).

### Simple version

[](#simple-version)

```
# config/packages/popo.yaml
popo:
  config:
    - schemaPath: config/packages/popo
```

### Full version

[](#full-version)

`schemaPath` is required, all other options can be overwritten.

```
# config/packages/popo.yaml
# schemaPath is required, other options can be defined in POPO schema file
popo:
  default:
    # namespace: ExampleVendor\App\Example
    outputPath: tests
    namespaceRoot: ExampleVendor\
    schemaPathFilter: # e.g. bundles
    schemaConfigFilename: # e.g. bundles/project.config.yml
    ignoreNonExistingSchemaFolder: false
    schemaFilenameMask: '*.popo.yaml'
    classPluginCollection: []
    mappingPolicyPluginCollection: []
    namespacePluginCollection: []
    phpFilePluginCollection: []
    propertyPluginCollection: []

  config:
    # customer, settings here overwrite the default values
    - schemaPath: config/packages/popo/customer.popo.yaml

    # order, settings here overwrite the default values
    - schemaPath: config/packages/popo/order.popo.yaml

    # product, settings here overwrite the default values
    - schemaPath: config/packages/popo/product.popo.yaml

    # or simply load all at once
    - schemaPath: config/packages/popo
```

- See [customer.popo.yaml](config%2Fpackages%2Fpopo%2Fcustomer.popo.yaml)
- See [order.popo.yaml](config%2Fpackages%2Fpopo%2Forder.popo.yaml)
- See [product.popo.yaml](config%2Fpackages%2Fpopo%2Fproduct.popo.yaml)

Usage
-----

[](#usage)

```
bin/console popo:generate

```

```
Generating POPO files...
Customer:ExampleVendor\App\Customer\Customer -> tests/App/Customer/Customer.php
Order:ExampleVendor\App\Order\Order -> tests/App/Order/Order.php
Order:ExampleVendor\App\Order\OrderItem -> tests/App/Order/OrderItem.php
Product:ExampleVendor\App\Product\Product -> tests/App/Product/Product.php
All done.
```

See [POPO Documentation](https://github.com/oliwierptak/popo) for more options.

Extending generated classes with custom logic
---------------------------------------------

[](#extending-generated-classes-with-custom-logic)

Adding custom logic to generated POPO classes is easy with plugins. For example to add `helloWorld` method:

```
# config/packages/popo.yaml
popo:
  default:
      classPluginCollection:
      - \PopoBundle\Plugin\HelloWorldPopoPlugin
```

HelloWorld plugin:

```
class HelloWorldPopoPlugin implements ClassPluginInterface
{
    public function run(BuilderPluginInterface $builder): void
    {
        $builder->getClass()
            ->addMethod('helloWorld')
            ->setReturnType('string')
            ->setBody('return "Hello World";');
    }
}
```

Generated code:

```
public function helloWorld(): string
{
    return "Hello World";
}
```

See [POPO Plugins Documentation](https://github.com/oliwierptak/popo/blob/main/README_PLUGINS.md) for more info.

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

1015d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/73a4cc056d2b09189dda46d01b76e71161dd9b75a226230bed6bec8f414d1cf8?d=identicon)[oliwierptak](/maintainers/oliwierptak)

---

Top Contributors

[![oliwierptak](https://avatars.githubusercontent.com/u/495101?v=4)](https://github.com/oliwierptak "oliwierptak (8 commits)")

---

Tags

generatorpojopoposymfonysymfony-bridgesymfony-bundle

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/popo-symfony-bridge/health.svg)

```
[![Health](https://phpackages.com/badges/popo-symfony-bridge/health.svg)](https://phpackages.com/packages/popo-symfony-bridge)
```

###  Alternatives

[symfony/ux-chartjs

Chart.js integration for Symfony

1003.2M18](/packages/symfony-ux-chartjs)[codefog/contao-haste

haste extension for Contao Open Source CMS

42650.8k139](/packages/codefog-contao-haste)[spomky-labs/pwa-bundle

Progressive Web App Manifest Generator Bundle for Symfony.

6144.4k1](/packages/spomky-labs-pwa-bundle)[symfony/ux-cropperjs

Cropper.js integration for Symfony

19280.3k3](/packages/symfony-ux-cropperjs)[netgen/content-browser

Netgen Content Browser is a Symfony bundle that provides an interface which selects items from any kind of backend and returns the IDs of selected items back to the calling code.

14112.1k8](/packages/netgen-content-browser)[pentiminax/ux-datatables

DataTables.net integration for Symfony

605.6k](/packages/pentiminax-ux-datatables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
