Lue dans les fichiers PHP du paquet au commit 945239b171f8 : ses espaces de noms, classes, interfaces et énumérations, leurs constantes, propriétés et méthodes publiques avec leur PHPDoc, et les options que prennent ses fabriques. Rien n’en est exécuté.
DeclarationDriverclassDoctrine's metadata of a class built from its declaration (Omnibridge\Schema\Declaration: what the class declares of its mapping, read without the ORM), no longer from its attributes: Doctrine reads the structure described outside of it (Marco's bridge principle, 2026-10-19; audit "lesringostars face au master plan", R14).
7 methods
EntityManagersclassAn entity manager over an omnibase site's database, for a framework that has none of its own: attribute mapping of the given folders, omnibase's naming strategy and types, PHP's native lazy objects for proxies.
1 method
MetadataDescriptionclassThe description (Omnibridge\Schema\Description) of what an entity manager maps: each class as its metadata hold it - table, fields, relations, inheritance, with the names its naming strategy gave - and the tables its SchemaTool would create, with their columns, keys, indexes and foreign keys.
3 methods
NamingStrategyclassDoctrine's naming strategy answered by the family's Naming (Omnibridge\Schema\Naming, omnisense/omnibridge): the names omnibase gives its tables and columns, for any framework mapping the same database - App\Entity\Thread\Tag is threadTag, App\Entity\User\Profile userProfile, Thread::$tags the join table thread_tags (thread_id, threadTag_id), a property its own name. One place says how a class becomes a table (CamelCaseNaming): omnibase's Base\Database\Mapping\NamingStrategy extends this class, and the description built without the ORM (Omnibridge\Schema\ Builder) asks the same Naming, so that both find the same tables.
9 methods · 2 constants
TypesclassThe DBAL types of omnibase's schema, registered as omnibase registers them (BaseBundle::boot(), BaseExtension::prependDoctrineTypes()): datetime and datetimetz written and read in UTC, utc_datetime and utc_datetime_immutable.
1 method
DateTimeTypeclassDoctrine's "datetime" as omnibase overrides it: written in UTC, read as UTC (omnibase's Base\Database\Type\DateTimeTypeUTC).
2 methods
UtcclassThe zone moments are kept in.
1 method
UtcDateTimeImmutableTypeclassomnibase's utc_datetime_immutable: a moment written and read in UTC, whatever zone PHP is in.
4 methods · 1 constant
UtcDateTimeTypeclassomnibase's utc_datetime: a moment written and read in UTC, whatever zone PHP is in.
4 methods · 1 constant
Omnibridge\Doctrine
DeclarationDriver class
final class DeclarationDriver implements MappingDriver DeclarationDriver.php:35
Doctrine's metadata of a class built from its declaration (Omnibridge\Schema\Declaration: what the class declares of its mapping, read without the ORM), no longer from its attributes: Doctrine reads the structure described outside of it (Marco's bridge principle, 2026-10-19; audit "lesringostars face au master plan", R14).
The declaration is read as doctrine/orm 3's AttributeDriver reads the attributes - the same calls on the ClassMetadata, in the same order, the attributes instantiated from their arguments as written - so the metadata are those it would build, to the property (the proof: omnisense/omnibase's MetadataSnapshot, every class of lesringostars, on both hosts). Which classes exist, and whether one is transient, stays the driver's it wraps (an AttributeDriver's folders, DoctrineBundle's chain); a class its declarations do not hold (an XML mapping) is left to that driver.
DeclarationDriver::__construct()
public function __construct(readonly MappingDriver $driver, readonly Declarations $declarations = new AttributeReader())DeclarationDriver::getDriver()
public function getDriver(): MappingDriverDeclarationDriver::getDeclarations()
public function getDeclarations(): DeclarationsDeclarationDriver::getAllClassNames()
public function getAllClassNames(): arrayDeclarationDriver::isTransient()
public function isTransient(string $className): boolDeclarationDriver::__call()
public function __call(string $method, array $arguments): mixedWhat else the wrapped driver answers (MappingDriverChain::getDrivers()...).
DeclarationDriver::loadMetadataForClass()
public function loadMetadataForClass(string $className, PersistenceClassMetadata $metadata): voidEntityManagers class
final class EntityManagers EntityManagers.php:23
An entity manager over an omnibase site's database, for a framework that has none of its own: attribute mapping of the given folders, omnibase's naming strategy and types, PHP's native lazy objects for proxies.
Without a cache, the metadata is kept in memory for the request (an ArrayAdapter): ORMSetup's own default, outside development, looks for APCu, Memcached, then a Redis on 127.0.0.1. $configure receives the configuration before the entity manager is built - a repository factory, filters, DQL functions: what can no longer change once it exists.
EntityManagers::create()
public static function create(Connection $connection, array $paths, bool $development = false, ?CacheItemPoolInterface $cache = null, ?\Closure $configure = null): EntityManager$pathsthe folders of the entities
MetadataDescription class
final class MetadataDescription MetadataDescription.php:42
The description (Omnibridge\Schema\Description) of what an entity manager maps: each class as its metadata hold it - table, fields, relations, inheritance, with the names its naming strategy gave - and the tables its SchemaTool would create, with their columns, keys, indexes and foreign keys.
What Doctrine resolved, written in the neutral form: compared with the description built outside Doctrine, with the database's own schema, or written to a file another persistence reads.
$values gives the values of an enumeration or a set column of a type the platform does not describe (an application's own types), null for the rest.
MetadataDescription::of()
public static function of(EntityManagerInterface $entityManager, ?array $classNames = null, ?\Closure $values = null): Description$classNamesthe classes, those the mapping driver knows when null
MetadataDescription::entity()
public static function entity(ClassMetadata $metadata): EntityMetadataDescription::table()
public static function table(SchemaTable $table, ?\Closure $values = null): TableNamingStrategy class
class NamingStrategy implements NamingStrategy NamingStrategy.php:19
Doctrine's naming strategy answered by the family's Naming (Omnibridge\Schema\Naming, omnisense/omnibridge): the names omnibase gives its tables and columns, for any framework mapping the same database - App\Entity\Thread\Tag is threadTag, App\Entity\User\Profile userProfile, Thread::$tags the join table thread_tags (thread_id, threadTag_id), a property its own name. One place says how a class becomes a table (CamelCaseNaming): omnibase's Base\Database\Mapping\NamingStrategy extends this class, and the description built without the ORM (Omnibridge\Schema\ Builder) asks the same Naming, so that both find the same tables.
const TABLE_NAME_SIZE = CamelCaseNaming::TABLE_NAME_SIZEconst TABLE_I18N_SUFFIX = CamelCaseNaming::TABLE_I18N_SUFFIX
NamingStrategy::__construct()
public function __construct(readonly Naming $naming = new CamelCaseNaming())NamingStrategy::naming()
public function naming(): NamingNamingStrategy::classToTableName()
public function classToTableName(string $className): stringNamingStrategy::propertyToColumnName()
public function propertyToColumnName(string $propertyName, string $className): stringNamingStrategy::embeddedFieldToColumnName()
public function embeddedFieldToColumnName(string $propertyName, string $embeddedColumnName, string $className, string $embeddedClassName): stringNamingStrategy::referenceColumnName()
public function referenceColumnName(): stringNamingStrategy::joinColumnName()
public function joinColumnName(string $propertyName, string $className): stringNamingStrategy::joinTableName()
public function joinTableName(string $sourceEntity, string $targetEntity, string $propertyName): stringNamingStrategy::joinKeyColumnName()
public function joinKeyColumnName(string $entityName, ?string $referencedColumnName): stringTypes class
final class Types Types.php:16
The DBAL types of omnibase's schema, registered as omnibase registers them (BaseBundle::boot(), BaseExtension::prependDoctrineTypes()): datetime and datetimetz written and read in UTC, utc_datetime and utc_datetime_immutable.
Before any metadata is read: a field's type is asked while it is.
Types::register()
public static function register(): voidOmnibridge\Doctrine\Type
DateTimeType class
class DateTimeType extends DateTimeType DateTimeType.php:12
Doctrine's "datetime" as omnibase overrides it: written in UTC, read as UTC (omnibase's Base\Database\Type\DateTimeTypeUTC).
DateTimeType::convertToDatabaseValue()
public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform): ?stringDateTimeType::convertToPHPValue()
public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?\DateTimeUtc class
final class Utc Utc.php:6
The zone moments are kept in.
Utc::zone()
public static function zone(): \DateTimeZoneUtcDateTimeImmutableType class
class UtcDateTimeImmutableType extends DateTimeImmutableType UtcDateTimeImmutableType.php:9
omnibase's utc_datetime_immutable: a moment written and read in UTC, whatever zone PHP is in.
const NAME = 'utc_datetime_immutable'
UtcDateTimeImmutableType::getName()
public function getName(): stringUtcDateTimeImmutableType::requiresSQLCommentHint()
public function requiresSQLCommentHint(AbstractPlatform $platform): boolUtcDateTimeImmutableType::convertToDatabaseValue()
public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform): ?stringUtcDateTimeImmutableType::convertToPHPValue()
public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?\DateTimeImmutableUtcDateTimeType class
class UtcDateTimeType extends DateTimeType UtcDateTimeType.php:9
omnibase's utc_datetime: a moment written and read in UTC, whatever zone PHP is in.
const NAME = 'utc_datetime'
UtcDateTimeType::getName()
public function getName(): stringUtcDateTimeType::requiresSQLCommentHint()
public function requiresSQLCommentHint(AbstractPlatform $platform): boolUtcDateTimeType::convertToDatabaseValue()
public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform): ?stringUtcDateTimeType::convertToPHPValue()
public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?\DateTime