This commit is contained in:
Xes
2025-08-14 22:41:49 +02:00
parent 2de81ccc46
commit 8ce45119b6
39774 changed files with 4309466 additions and 0 deletions

View File

@@ -0,0 +1,252 @@
<?php
/*
* This file is part of the Sonata Project package.
*
* (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Sonata\EasyExtendsBundle\Mapper;
class DoctrineCollector
{
/**
* @var array
*/
protected $associations;
/**
* @var array
*/
protected $indexes;
/**
* @var array
*/
protected $uniques;
/**
* @var array
*/
protected $discriminators;
/**
* @var array
*/
protected $discriminatorColumns;
/**
* @var array
*/
protected $inheritanceTypes;
/**
* @var array
*/
protected $overrides;
/**
* @var DoctrineCollector
*/
private static $instance;
public function __construct()
{
$this->associations = array();
$this->indexes = array();
$this->uniques = array();
$this->discriminatorColumns = array();
$this->inheritanceTypes = array();
$this->discriminators = array();
$this->overrides = array();
}
/**
* @return DoctrineCollector
*/
public static function getInstance()
{
if (!self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Add a discriminator to a class.
*
* @param string $class The Class
* @param string $key Key is the database value and values are the classes
* @param string $discriminatorClass The mapped class
*/
public function addDiscriminator($class, $key, $discriminatorClass)
{
if (!isset($this->discriminators[$class])) {
$this->discriminators[$class] = array();
}
if (!isset($this->discriminators[$class][$key])) {
$this->discriminators[$class][$key] = $discriminatorClass;
}
}
/**
* Add the Discriminator Column.
*
* @param string $class
* @param array $columnDef
*/
public function addDiscriminatorColumn($class, array $columnDef)
{
if (!isset($this->discriminatorColumns[$class])) {
$this->discriminatorColumns[$class] = $columnDef;
}
}
/**
* @param string $class
* @param string $type
*/
public function addInheritanceType($class, $type)
{
if (!isset($this->inheritanceTypes[$class])) {
$this->inheritanceTypes[$class] = $type;
}
}
/**
* @param string $class
* @param string $type
* @param array $options
*/
public function addAssociation($class, $type, array $options)
{
if (!isset($this->associations[$class])) {
$this->associations[$class] = array();
}
if (!isset($this->associations[$class][$type])) {
$this->associations[$class][$type] = array();
}
$this->associations[$class][$type][] = $options;
}
/**
* @param string $class
* @param string $name
* @param array $columns
*/
public function addIndex($class, $name, array $columns)
{
if (!isset($this->indexes[$class])) {
$this->indexes[$class] = array();
}
if (isset($this->indexes[$class][$name])) {
return;
}
$this->indexes[$class][$name] = $columns;
}
/**
* @param string $class
* @param string $name
* @param array $columns
*/
public function addUnique($class, $name, array $columns)
{
if (!isset($this->indexes[$class])) {
$this->uniques[$class] = array();
}
if (isset($this->uniques[$class][$name])) {
return;
}
$this->uniques[$class][$name] = $columns;
}
/**
* Adds new override.
*
* @param string $class
* @param string $type
* @param array $options
*/
final public function addOverride($class, $type, array $options)
{
if (!isset($this->overrides[$class])) {
$this->overrides[$class] = array();
}
if (!isset($this->overrides[$class][$type])) {
$this->overrides[$class][$type] = array();
}
$this->overrides[$class][$type][] = $options;
}
/**
* @return array
*/
public function getAssociations()
{
return $this->associations;
}
/**
* @return array
*/
public function getDiscriminators()
{
return $this->discriminators;
}
/**
* @return array
*/
public function getDiscriminatorColumns()
{
return $this->discriminatorColumns;
}
/**
* @return array
*/
public function getInheritanceTypes()
{
return $this->inheritanceTypes;
}
/**
* @return array
*/
public function getIndexes()
{
return $this->indexes;
}
/**
* @return array
*/
public function getUniques()
{
return $this->uniques;
}
/**
* Get all overrides.
*
* @return array
*/
final public function getOverrides()
{
return $this->overrides;
}
}