/** * Sets the discriminator values used by this class. * Used for JOINED and SINGLE_TABLE inheritance mapping strategies. * * @param array $map */ public function setDiscriminatorMap(array $map) { foreach ($map as $value => $className) { if (strpos($className, '\\') === false && strlen($this->namespace)) { $className = $this->namespace . '\\' . $className; } $this->discriminatorMap[$value] = $className; if ($this->name == $className) { $this->discriminatorValue = $value; } else { if (!class_exists($className)) { throw MappingException::invalidClassInDiscriminatorMap($className, $this->name); } if (is_subclass_of($className, $this->name)) { $this->subClasses[] = $className; } } } }
/** * Add one entry of the discriminator map with a new class and corresponding name. * * @param string $name * @param string $className * @throws MappingException * @return void */ public function addDiscriminatorMapClass($name, $className) { if (strlen($this->namespace) > 0 && strpos($className, '\\') === false) { $className = $this->namespace . '\\' . $className; } $className = ltrim($className, '\\'); $this->discriminatorMap[$name] = $className; if ($this->name == $className) { $this->discriminatorValue = $name; } else { if (!class_exists($className)) { throw MappingException::invalidClassInDiscriminatorMap($className, $this->name); } if (is_subclass_of($className, $this->name) && !in_array($className, $this->subClasses)) { $this->subClasses[] = $className; } } }
/** * Adds one entry of the discriminator map with a new class and corresponding name. * * @param string $name * @param string $className * * @return void * * @throws MappingException */ public function addDiscriminatorMapClass($name, $className) { $className = $this->fullyQualifiedClassName($className); $className = ltrim($className, '\\'); $this->discriminatorMap[$name] = $className; if ($this->name === $className) { $this->discriminatorValue = $name; return; } if (!(class_exists($className) || interface_exists($className))) { throw MappingException::invalidClassInDiscriminatorMap($className, $this->name); } if (is_subclass_of($className, $this->name) && !in_array($className, $this->subClasses)) { $this->subClasses[] = $className; } }