sonata-project / EntityAuditBundle

Audit for Doctrine Entities
https://sonata-project.org
MIT License
632 stars 261 forks source link

Incompatible with Lazy-Loading Proxies (Ghost)? #548

Closed mvhirsch closed 11 months ago

mvhirsch commented 1 year ago

Environment

Symfony 6.2 project, using sonata-project/entity-audit-bundle standalone (without sonata-project/admin-bundle).

After upgrading to 1.11.0 (from 1.10.1) I'm receiving errors.

Sonata packages

show

``` $ symfony composer show --latest sonata-project/* Info from https://repo.packagist.org: #StandWithUkraine Color legend: - patch or minor release available - update recommended - major release available - update possible - up to date version Direct dependencies required in composer.json: sonata-project/entity-audit-bundle 1.11.0 1.11.0 Audit for Doctrine Entities Transitive dependencies not required in composer.json: Everything up to date ```

Symfony packages

show

``` $> symfony composer show --latest symfony/* Color legend: - patch or minor release available - update recommended - major release available - update possible - up to date version Direct dependencies required in composer.json: symfony/asset v6.2.5 v6.2.5 Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files symfony/browser-kit v6.2.5 v6.2.5 Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically symfony/cache v6.2.5 v6.2.5 Provides extended PSR-6, PSR-16 (and tags) implementations symfony/config v6.2.5 v6.2.5 Helps you find, load, combine, autofill and validate configuration values of any kind symfony/console v6.2.5 v6.2.5 Eases the creation of beautiful and testable command line interfaces symfony/css-selector v6.2.5 v6.2.5 Converts CSS selectors to XPath expressions symfony/debug-bundle v6.2.5 v6.2.5 Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework symfony/dependency-injection v6.2.6 v6.2.6 Allows you to standardize and centralize the way objects are constructed in your application symfony/doctrine-bridge v6.2.5 v6.2.5 Provides integration for Doctrine with various Symfony components symfony/doctrine-messenger v6.2.5 v6.2.5 Symfony Doctrine Messenger Bridge symfony/dotenv v6.2.5 v6.2.5 Registers environment variables from a .env file symfony/error-handler v6.2.5 v6.2.5 Provides tools to manage errors and ease debugging PHP code symfony/event-dispatcher v6.2.5 v6.2.5 Provides tools that allow your application components to communicate with each other by dispatching events and listening to them symfony/filesystem v6.2.5 v6.2.5 Provides basic utilities for the filesystem symfony/finder v6.2.5 v6.2.5 Finds files and directories via an intuitive fluent interface symfony/flex v2.2.5 v2.2.5 Composer plugin for Symfony symfony/form v6.2.5 v6.2.5 Allows to easily create, process and reuse HTML forms symfony/framework-bundle v6.2.5 v6.2.5 Provides a tight integration between Symfony components and the Symfony full-stack framework symfony/http-client v6.2.6 v6.2.6 Provides powerful methods to fetch HTTP resources synchronously or asynchronously symfony/http-foundation v6.2.6 v6.2.6 Defines an object-oriented layer for the HTTP specification symfony/http-kernel v6.2.6 v6.2.6 Provides a structured process for converting a Request into a Response symfony/intl v6.2.5 v6.2.5 Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library symfony/ldap v6.2.5 v6.2.5 Provides a LDAP client for PHP on top of PHP's ldap extension symfony/lock v6.2.5 v6.2.5 Creates and manages locks, a mechanism to provide exclusive access to a shared resource symfony/maker-bundle v1.48.0 v1.48.0 Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code. symfony/messenger v6.2.5 v6.2.5 Helps applications send and receive messages to/from other applications or via message queues symfony/mime v6.2.5 v6.2.5 Allows manipulating MIME messages symfony/monolog-bridge v6.2.5 v6.2.5 Provides integration for Monolog with various Symfony components symfony/monolog-bundle v3.8.0 v3.8.0 Symfony MonologBundle symfony/options-resolver v6.2.5 v6.2.5 Provides an improved replacement for the array_replace PHP function symfony/password-hasher v6.2.5 v6.2.5 Provides password hashing utilities symfony/phpunit-bridge v6.2.5 v6.2.5 Provides utilities for PHPUnit, especially user deprecation notices management symfony/process v6.2.5 v6.2.5 Executes commands in sub-processes symfony/property-access v6.2.5 v6.2.5 Provides functions to read and write from/to an object or array using a simple string notation symfony/property-info v6.2.5 v6.2.5 Extracts information about PHP class' properties using metadata of popular sources symfony/routing v6.2.5 v6.2.5 Maps an HTTP request to a set of configuration variables symfony/runtime v6.2.5 v6.2.5 Enables decoupling PHP applications from global state symfony/security-bundle v6.2.6 v6.2.6 Provides a tight integration of the Security component into the Symfony full-stack framework symfony/security-core v6.2.5 v6.2.5 Symfony Security Component - Core Library symfony/security-csrf v6.2.5 v6.2.5 Symfony Security Component - CSRF Library symfony/security-http v6.2.6 v6.2.6 Symfony Security Component - HTTP Integration symfony/serializer v6.2.5 v6.2.5 Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON. symfony/stopwatch v6.2.5 v6.2.5 Provides a way to profile code symfony/string v6.2.5 v6.2.5 Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way symfony/translation v6.2.5 v6.2.5 Provides tools to internationalize your application symfony/translation-contracts v2.5.2 v3.2.0 Generic abstractions related to translation symfony/twig-bridge v6.2.5 v6.2.5 Provides integration for Twig with various Symfony components symfony/twig-bundle v6.2.5 v6.2.5 Provides a tight integration of Twig into the Symfony full-stack framework symfony/uid v6.2.5 v6.2.5 Provides an object-oriented API to generate and represent UIDs symfony/validator v6.2.5 v6.2.5 Provides tools to validate values symfony/var-dumper v6.2.5 v6.2.5 Provides mechanisms for walking through any arbitrary PHP variable symfony/var-exporter v6.2.5 v6.2.5 Allows exporting any serializable PHP data structure to plain PHP code symfony/web-link v6.2.5 v6.2.5 Manages links between resources symfony/web-profiler-bundle v6.2.5 v6.2.5 Provides a development tool that gives detailed information about the execution of any request symfony/yaml v6.2.5 v6.2.5 Loads and dumps YAML files Transitive dependencies not required in composer.json: symfony/cache-contracts v3.2.0 v3.2.0 Generic abstractions related to caching symfony/deprecation-contracts v3.2.0 v3.2.0 A generic function and convention to trigger deprecation notices symfony/dom-crawler v6.2.5 v6.2.5 Eases DOM navigation for HTML and XML documents symfony/event-dispatcher-contracts v3.2.0 v3.2.0 Generic abstractions related to dispatching event symfony/http-client-contracts v3.2.0 v3.2.0 Generic abstractions related to HTTP clients symfony/polyfill-intl-grapheme v1.27.0 v1.27.0 Symfony polyfill for intl's grapheme_* functions symfony/polyfill-intl-icu v1.27.0 v1.27.0 Symfony polyfill for intl's ICU-related data and classes symfony/polyfill-intl-idn v1.27.0 v1.27.0 Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions symfony/polyfill-intl-normalizer v1.27.0 v1.27.0 Symfony polyfill for intl's Normalizer class and related functions symfony/polyfill-mbstring v1.27.0 v1.27.0 Symfony polyfill for the Mbstring extension symfony/polyfill-uuid v1.27.0 v1.27.0 Symfony polyfill for uuid functions symfony/service-contracts v3.2.0 v3.2.0 Generic abstractions related to writing services ```

PHP version

$> symfony php -v
PHP 8.2.2 (cli) (built: Jan 31 2023 13:31:55) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.2, Copyright (c), by Zend Technologies

Subject

My simple tests fail while creating an audited entity and persisting it to database.

Error: Call to a member function getDatabasePlatform() on null

/path/to/project/vendor/sonata-project/entity-audit-bundle/src/AuditReader.php:84
/path/to/project/vendor/sonata-project/entity-audit-bundle/src/AuditManager.php:65
/path/to/project/var/cache/test/13cce305f90edb216a92c109aaf70419b93a61ac/ContainerX6upyDU/App_Tests_Util_TestKernelTestContainer.php:2441
/path/to/project/var/cache/test/13cce305f90edb216a92c109aaf70419b93a61ac/ContainerX6upyDU/App_Tests_Util_TestKernelTestContainer.php:22153
/path/to/project/vendor/symfony/dependency-injection/Container.php:381
/path/to/project/vendor/symfony/dependency-injection/Argument/ServiceLocator.php:40
/path/to/project/vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php:191
/path/to/project/vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php:105
/path/to/project/vendor/doctrine/dbal/src/Connection.php:384
/path/to/project/vendor/doctrine/dbal/src/Connection.php:446
/path/to/project/vendor/doctrine/dbal/src/Connection.php:408
/path/to/project/vendor/doctrine/dbal/src/Connection.php:316
/path/to/project/vendor/dama/doctrine-test-bundle/src/DAMA/DoctrineTestBundle/Doctrine/DBAL/StaticConnectionFactory.php:39
/path/to/project/var/cache/test/13cce305f90edb216a92c109aaf70419b93a61ac/ContainerX6upyDU/App_Tests_Util_TestKernelTestContainer.php:1775
/path/to/project/var/cache/test/13cce305f90edb216a92c109aaf70419b93a61ac/ContainerX6upyDU/App_Tests_Util_TestKernelTestContainer.php:1854
/path/to/project/vendor/symfony/var-exporter/Internal/LazyObjectState.php:95
/path/to/project/vendor/symfony/var-exporter/LazyGhostTrait.php:175
/path/to/project/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:318
/path/to/project/vendor/ergebnis/factory-bot/src/FixtureFactory.php:71
/path/to/project/tests/Fixture/Entity/Definition/AkteDefinition.php:28
/path/to/project/vendor/ergebnis/factory-bot/src/FixtureFactory.php:175
/path/to/project/tests/Database/DatabaseTestCase.php:97
/path/to/project/tests/Database/DatabaseTestCase.php:104
/path/to/project/tests/Database/DatabaseTestCase.php:49

Dumping the received object $em in AuditReader it shows an ghost object like in Revisiting Lazy-loading Proxies in PHP

 Container5TQTRAt\EntityManagerGhostCbe3706^ {#12804
  -config: null
  -conn: null
  -metadataFactory: null
  -unitOfWork: null
  -eventManager: null
  -proxyFactory: null
  -repositoryFactory: null
  -expressionBuilder: null
  -closed: false
  -filterCollection: null
  -cache: null
  -lazyObjectState: Symfony\Component\VarExporter\Internal\LazyObjectState^ {#12148
    +status: INITIALIZED_FULL
     …2
  }
}

To me it looks like the bundle cannot handle a lazy-loaded proxies. I'm not an expert in lazy-loading proxies (heck, my first try to override the AuditReader service definition failed, too). Not sure why version 1.11.0 fails, since there aren't any noticeable changes made in v1.11.0.

How can I help?

Minimal repository with the bug

N/A

Steps to reproduce

Expected results

Entity persists without failing.

Actual results

Error: Call to a member function getDatabasePlatform() on null
VincentLanglet commented 1 year ago

Ping @X-Coder264

X-Coder264 commented 1 year ago

Line 84 is a line in the constructor:

$this->platform = $this->em->getConnection()->getDatabasePlatform();

The getConnection method is not even documented to be able to return null which makes sense as the Connection is a required parameter in the entity manager class constructor so it's impossible for it to be null. This looks like some issue with proxies and that they are either not created or resolved properly, neither of which seems to be an issue in this bundle's code nor do I see anything in the 1.11 release that would be related to this.

Are you sure that some other (maybe transitive?) dependencies haven't been updated too?

mvhirsch commented 1 year ago

Yes, pretty sure. The only package that gets updated (and thus starts failing) is this bundle:

$> symfony composer require sonata-project/entity-audit-bundle ^1.11
./composer.json has been updated
Running composer update sonata-project/entity-audit-bundle
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 0 installs, 1 update, 0 removals
  - Upgrading sonata-project/entity-audit-bundle (1.10.1 => 1.11.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
  - Upgrading sonata-project/entity-audit-bundle (1.10.1 => 1.11.0): Extracting archive
Package ergebnis/test-util is abandoned, you should avoid using it. Use ergebnis/data-provider instead.
Generating autoload files
132 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
phpstan/extension-installer: Extensions installed

Run composer recipes at any time to see the status of your Symfony recipes.

infection/extension-installer: No extensions found
No security vulnerability advisories found

To be honest, I can't see the problem, too.

VincentLanglet commented 1 year ago

Line 84 is a line in the constructor:

$this->platform = $this->em->getConnection()->getDatabasePlatform();

The getConnection method is not even documented to be able to return null which makes sense as the Connection is a required parameter in the entity manager class constructor so it's impossible for it to be null. This looks like some issue with proxies and that they are either not created or resolved properly, neither of which seems to be an issue in this bundle's code nor do I see anything in the 1.11 release that would be related to this.

Might be worth to report this to doctrine then.

jordisala1991 commented 1 year ago

It should not be hard enabling the new proxy system on higher deps and fallback to old system for lower deps.

mvhirsch commented 1 year ago

Using 1.13.0 just works. I don't know which change leads to this result. Anyway, should we close this issue?

OskarStark commented 1 year ago

Maybe because drop support for doctrine-bundle <2.7?

https://github.com/sonata-project/EntityAuditBundle/releases/tag/1.13.0

VincentLanglet commented 1 year ago

Using 1.13.0 just works. I don't know which change leads to this result. Anyway, should we close this issue?

Closing then, we'll see if someone re-report the issue

mvhirsch commented 1 year ago

Okay, looks like the CI is green and @OskarStark's repo works just fine. Mine not. Differences? I don't know. I didn't check it on my machine, since I was impressed it just worked after dependabot created the new MR using 1.13.0. Today I fetched the new code, ran the tests and they failed because of above mentioned error.

I honestly admit: I don't fully understood the ghost objects or proxies. Maybe it's time to familiarize myself with this topic in detail.

We're using the same composer.lock:

show

``` $> symfony composer info api-platform/core v3.1.7 Build a fully-featured hypermedia or GraphQL API in minutes! behat/mink v1.10.0 Browser controller/emulator abstraction for PHP behat/transliterator v1.5.0 String transliterator composer-unused/contracts 0.2.0 Contract repository for composer-unused composer-unused/symbol-parser 0.1.12 Toolkit to parse symbols from a composer package composer/pcre 3.1.0 PCRE wrapping library that offers type-safe preg_* replacements. composer/semver 3.3.2 Semver library that offers utilities, version constraint parsing and validation. composer/xdebug-handler 3.0.3 Restarts a process without Xdebug. dama/doctrine-test-bundle v7.2.1 Symfony bundle to isolate doctrine database tests and improve test performance datana-gmbh/doctrine-postgres-public-schema-listener 1.2.0 An Migration EventSubscriber which ensures public namespace is only added if needed datana-gmbh/logz-io-handler 1.5.0 A pre configured handler for logz.io datana-gmbh/zammad-api 1.6.0 API for Zammad ddeboer/imap 1.17.0 Object-oriented IMAP for PHP doctrine/annotations 2.0.1 Docblock Annotations Parser doctrine/cache 2.2.0 PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others. doctrine/collections 1.8.0 PHP Doctrine Collections library that adds additional functionality on top of PHP arrays. doctrine/common 3.4.3 PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much m... doctrine/dbal 3.6.2 Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management. doctrine/deprecations v1.0.0 A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages. doctrine/doctrine-bundle 2.9.1 Symfony DoctrineBundle doctrine/doctrine-migrations-bundle 3.2.2 Symfony DoctrineMigrationsBundle doctrine/event-manager 1.2.0 The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects. doctrine/inflector 2.0.6 PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words. doctrine/instantiator 1.5.0 A small, lightweight utility to instantiate objects in PHP without invoking their constructors doctrine/lexer 2.1.0 PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers. doctrine/migrations 3.6.0 PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying chan... doctrine/orm 2.14.2 Object-Relational-Mapper for PHP doctrine/persistence 3.1.4 The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share. doctrine/sql-formatter 1.1.3 a PHP SQL highlighting library easycorp/easyadmin-bundle v4.6.1 Admin generator for Symfony applications ergebnis/classy 1.4.0 Provides a finder for classy constructs (classes, enums, interfaces, and traits). ergebnis/composer-normalize 2.30.2 Provides a composer plugin for normalizing composer.json. ergebnis/json 1.0.1 Provides a Json value object for representing a valid JSON string. ergebnis/json-normalizer 4.0.2 Provides generic and vendor-specific normalizers for normalizing JSON documents. ergebnis/json-pointer 3.2.0 Provides JSON pointer as a value object. ergebnis/json-printer 3.3.0 Provides a JSON printer, allowing for flexible indentation. ergebnis/json-schema-validator 4.0.0 Provides a JSON schema validator, building on top of justinrainbow/json-schema. ergebnis/php-cs-fixer-config 5.5.0 Provides a configuration factory and multiple rule sets for friendsofphp/php-cs-fixer. ergebnis/test-util 1.6.0 Provides a helper trait and generic data providers for tests. ezyang/htmlpurifier v4.16.0 Standards compliant HTML filter written in PHP fakerphp/faker v1.21.0 Faker is a PHP library that generates fake data for you. friendsofphp/php-cs-fixer v3.16.0 A tool to automatically fix PHP code style gedmo/doctrine-extensions v3.11.0 Doctrine2 behavioral extensions guzzlehttp/guzzle 7.5.0 Guzzle is a PHP HTTP client library guzzlehttp/promises 1.5.2 Guzzle promises library guzzlehttp/psr7 1.9.0 PSR-7 message implementation that also provides common utility methods icanhazstring/composer-unused 0.8.7 Show unused packages by scanning your code inpsyde/logzio-monolog 1.1 Logz.io integration for Monolog jean85/pretty-package-versions 2.0.5 A library to get pretty versions strings of installed dependencies justinrainbow/json-schema 5.2.12 A library to validate a json schema. lcobucci/clock 3.0.0 Yet another clock abstraction lcobucci/jwt 4.3.0 A simple library to work with JSON Web Token and JSON Web Signature lexik/jwt-authentication-bundle v2.18.1 This bundle provides JWT authentication for your Symfony REST API localheinz/diff 1.1.1 Fork of sebastian/diff for use with ergebnis/composer-normalize maennchen/zipstream-php v2.4.0 ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server. markbaker/complex 3.0.2 PHP Class for working with complex numbers markbaker/matrix 3.0.1 PHP Class for working with matrices masterminds/html5 2.7.6 An HTML5 parser and serializer. microsoft/azure-storage-common 1.5.2 This project provides a set of common code shared by Azure Storage Blob, Table, Queue and File PHP client libraries. microsoft/azure-storage-file 1.2.5 This project provides a set of PHP client libraries that make it easy to access Microsoft Azure Storage File APIs. mongodb/mongodb 1.15.0 MongoDB driver library monolog/monolog 2.9.1 Sends your logs to files, sockets, inboxes, databases and various web services mtdowling/jmespath.php 2.6.1 Declaratively specify how to extract elements from a JSON document myclabs/deep-copy 1.11.1 Create deep copies (clones) of your objects myclabs/php-enum 1.8.4 PHP Enum implementation namshi/jose 7.2.3 JSON Object Signing and Encryption library for PHP. nelmio/cors-bundle 2.3.1 Adds CORS (Cross-Origin Resource Sharing) headers support in your Symfony application nikic/php-parser v4.15.4 A PHP parser written in PHP ondram/ci-detector 4.1.0 Detect continuous integration environment and provide unified access to properties of current build org_heigl/dateintervalcomparator 1.0.1 Compare two DateInterval-Objects with one another oro/doctrine-extensions 2.0.2 Doctrine Extensions for MySQL and PostgreSQL. oskarstark/enum-helper 1.2.0 This library provides helpers for several enum operations oskarstark/trimmed-non-empty-string 1.0.0 This library provides a value object which ensures a trimmed non empty string. phar-io/manifest 2.0.3 Component for reading phar.io manifest information from a PHP Archive (PHAR) phar-io/version 3.2.1 Library for handling version information and constraints phpoffice/phpspreadsheet 1.28.0 PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine phpstan/extension-installer 1.2.0 Composer plugin for automatic installation of PHPStan extensions phpstan/phpdoc-parser 1.16.1 PHPDoc parser with support for nullable, intersection and generic types phpstan/phpstan 1.10.13 PHPStan - PHP Static Analysis Tool phpstan/phpstan-deprecation-rules 1.1.3 PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits. phpstan/phpstan-doctrine 1.3.37 Doctrine extensions for PHPStan phpstan/phpstan-phpunit 1.3.11 PHPUnit extensions and rules for PHPStan phpstan/phpstan-strict-rules 1.5.1 Extra strict and opinionated rules for PHPStan phpstan/phpstan-symfony 1.3.1 Symfony Framework extensions and rules for PHPStan phpstan/phpstan-webmozart-assert 1.2.4 PHPStan webmozart/assert extension phpunit/php-code-coverage 9.2.26 Library that provides collection, processing, and rendering functionality for PHP code coverage information. phpunit/php-file-iterator 3.0.6 FilterIterator implementation that filters files based on a list of suffixes. phpunit/php-invoker 3.1.1 Invoke callables with a timeout phpunit/php-text-template 2.0.4 Simple template engine. phpunit/php-timer 5.0.3 Utility class for timing phpunit/phpunit 9.6.7 The PHP Unit Testing framework. psr/cache 3.0.0 Common interface for caching libraries psr/clock 1.0.0 Common interface for reading the clock. psr/container 2.0.2 Common Container Interface (PHP FIG PSR-11) psr/event-dispatcher 1.0.0 Standard interfaces for event handling. psr/http-client 1.0.1 Common interface for HTTP clients psr/http-factory 1.0.1 Common interfaces for PSR-7 HTTP message factories psr/http-message 1.1 Common interface for HTTP messages psr/link 2.0.1 Common interfaces for HTTP links psr/log 3.0.0 Common interface for logging libraries psr/simple-cache 3.0.0 Common interfaces for simple caching ralouphie/getallheaders 3.0.3 A polyfill for getallheaders. rector/rector 0.15.24 Instant Upgrade and Automated Refactoring of any PHP code sebastian/cli-parser 1.0.1 Library for parsing CLI options sebastian/code-unit 1.0.8 Collection of value objects that represent the PHP code units sebastian/code-unit-reverse-lookup 2.0.3 Looks up which function or method a line of code belongs to sebastian/comparator 4.0.8 Provides the functionality to compare PHP values for equality sebastian/complexity 2.0.2 Library for calculating the complexity of PHP code units sebastian/diff 4.0.4 Diff implementation sebastian/environment 5.1.5 Provides functionality to handle HHVM/PHP environments sebastian/exporter 4.0.5 Provides the functionality to export PHP variables for visualization sebastian/global-state 5.0.5 Snapshotting of global state sebastian/lines-of-code 1.0.3 Library for counting the lines of code in PHP source code sebastian/object-enumerator 4.0.4 Traverses array structures and object graphs to enumerate all referenced objects sebastian/object-reflector 2.0.4 Allows reflection of object attributes, including inherited and non-public ones sebastian/recursion-context 4.0.5 Provides functionality to recursively process PHP variables sebastian/resource-operations 3.0.3 Provides a list of PHP built-in functions that operate on resources sebastian/type 3.2.1 Collection of value objects that represent the types of the PHP type system sebastian/version 3.0.2 Library that helps with managing the version number of Git-hosted PHP projects sonata-project/entity-audit-bundle 1.13.0 Audit for Doctrine Entities stof/doctrine-extensions-bundle v1.7.1 Integration of the gedmo/doctrine-extensions with Symfony symfony/asset v6.2.7 Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files symfony/browser-kit v6.2.7 Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically symfony/cache v6.2.8 Provides extended PSR-6, PSR-16 (and tags) implementations symfony/cache-contracts v3.2.1 Generic abstractions related to caching symfony/config v6.2.7 Helps you find, load, combine, autofill and validate configuration values of any kind symfony/console v6.2.8 Eases the creation of beautiful and testable command line interfaces symfony/css-selector v6.2.7 Converts CSS selectors to XPath expressions symfony/debug-bundle v6.2.7 Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework symfony/dependency-injection v6.2.8 Allows you to standardize and centralize the way objects are constructed in your application symfony/deprecation-contracts v3.2.1 A generic function and convention to trigger deprecation notices symfony/doctrine-bridge v6.2.9 Provides integration for Doctrine with various Symfony components symfony/doctrine-messenger v6.2.7 Symfony Doctrine Messenger Bridge symfony/dom-crawler v6.2.7 Eases DOM navigation for HTML and XML documents symfony/dotenv v6.2.8 Registers environment variables from a .env file symfony/error-handler v6.2.9 Provides tools to manage errors and ease debugging PHP code symfony/event-dispatcher v6.2.8 Provides tools that allow your application components to communicate with each other by dispatching events and listening to them symfony/event-dispatcher-contracts v3.2.1 Generic abstractions related to dispatching event symfony/filesystem v6.2.7 Provides basic utilities for the filesystem symfony/finder v6.2.7 Finds files and directories via an intuitive fluent interface symfony/flex v2.2.5 Composer plugin for Symfony symfony/form v6.2.8 Allows to easily create, process and reuse HTML forms symfony/framework-bundle v6.2.9 Provides a tight integration between Symfony components and the Symfony full-stack framework symfony/http-client v6.2.9 Provides powerful methods to fetch HTTP resources synchronously or asynchronously symfony/http-client-contracts v3.2.1 Generic abstractions related to HTTP clients symfony/http-foundation v6.2.8 Defines an object-oriented layer for the HTTP specification symfony/http-kernel v6.2.9 Provides a structured process for converting a Request into a Response symfony/intl v6.2.9 Provides access to the localization data of the ICU library symfony/ldap v6.2.8 Provides a LDAP client for PHP on top of PHP's ldap extension symfony/lock v6.2.8 Creates and manages locks, a mechanism to provide exclusive access to a shared resource symfony/maker-bundle v1.48.0 Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code. symfony/messenger v6.2.8 Helps applications send and receive messages to/from other applications or via message queues symfony/mime v6.2.7 Allows manipulating MIME messages symfony/monolog-bridge v6.2.8 Provides integration for Monolog with various Symfony components symfony/monolog-bundle v3.8.0 Symfony MonologBundle symfony/options-resolver v6.2.7 Provides an improved replacement for the array_replace PHP function symfony/password-hasher v6.2.7 Provides password hashing utilities symfony/phpunit-bridge v6.2.7 Provides utilities for PHPUnit, especially user deprecation notices management symfony/polyfill-intl-grapheme v1.27.0 Symfony polyfill for intl's grapheme_* functions symfony/polyfill-intl-icu v1.27.0 Symfony polyfill for intl's ICU-related data and classes symfony/polyfill-intl-idn v1.27.0 Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions symfony/polyfill-intl-normalizer v1.27.0 Symfony polyfill for intl's Normalizer class and related functions symfony/polyfill-mbstring v1.27.0 Symfony polyfill for the Mbstring extension symfony/polyfill-uuid v1.27.0 Symfony polyfill for uuid functions symfony/process v6.2.8 Executes commands in sub-processes symfony/property-access v6.2.8 Provides functions to read and write from/to an object or array using a simple string notation symfony/property-info v6.2.8 Extracts information about PHP class' properties using metadata of popular sources symfony/routing v6.2.8 Maps an HTTP request to a set of configuration variables symfony/runtime v6.2.8 Enables decoupling PHP applications from global state symfony/security-bundle v6.2.8 Provides a tight integration of the Security component into the Symfony full-stack framework symfony/security-core v6.2.8 Symfony Security Component - Core Library symfony/security-csrf v6.2.7 Symfony Security Component - CSRF Library symfony/security-http v6.2.8 Symfony Security Component - HTTP Integration symfony/serializer v6.2.8 Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON. symfony/service-contracts v3.2.1 Generic abstractions related to writing services symfony/stopwatch v6.2.7 Provides a way to profile code symfony/string v6.2.8 Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way symfony/translation v6.2.8 Provides tools to internationalize your application symfony/translation-contracts v2.5.2 Generic abstractions related to translation symfony/twig-bridge v6.2.8 Provides integration for Twig with various Symfony components symfony/twig-bundle v6.2.7 Provides a tight integration of Twig into the Symfony full-stack framework symfony/uid v6.2.7 Provides an object-oriented API to generate and represent UIDs symfony/validator v6.2.8 Provides tools to validate values symfony/var-dumper v6.2.8 Provides mechanisms for walking through any arbitrary PHP variable symfony/var-exporter v6.2.8 Allows exporting any serializable PHP data structure to plain PHP code symfony/web-link v6.2.7 Manages links between resources symfony/web-profiler-bundle v6.2.7 Provides a development tool that gives detailed information about the execution of any request symfony/yaml v6.2.7 Loads and dumps YAML files thecodingmachine/phpstan-safe-rule v1.2.0 A PHPStan rule to detect safety issues. Must be used in conjunction with thecodingmachine/safe thecodingmachine/safe v2.5.0 PHP core functions that throw exceptions instead of returning FALSE on error theseer/tokenizer 1.2.1 A small library for converting tokenized PHP source code into XML and potentially other formats twig/twig v3.5.1 Twig, the flexible, fast, and secure template language for PHP vincentlanglet/twig-cs-fixer 1.0.0 A tool to automatically fix Twig code style webmozart/assert 1.11.0 Assertions to validate method input/output with nice error messages. webmozart/glob 4.6.0 A PHP implementation of Ant's glob. willdurand/negotiation 3.1.0 Content Negotiation tools for PHP provided as a standalone library. zenstruck/assert v1.3.0 Standalone, lightweight, framework agnostic, test assertion library. zenstruck/browser v1.4.0 A fluent interface for your Symfony functional tests. zenstruck/callback v1.5.0 Callable wrapper to validate and inject arguments. zenstruck/foundry v1.31.0 A model factory library for creating expressive, auto-completable, on-demand dev/test fixtures with Symfony and Doctrine. zenstruck/messenger-test v1.7.2 Assertions and helpers for testing your symfony/messenger queues. ```

github-actions[bot] commented 11 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.