private function getObjectMapping($className, $directory)
    {
        $namespace = $this->finder->getNamespace($className, $directory);

        if (array_key_exists($namespace, $this->objects)) {
            return $this->objects[$namespace];
        }

        $reflectionClass = new \ReflectionClass($namespace);

        switch (true) {
            case $this->reader->getClassAnnotation($reflectionClass, self::OBJECT_ANNOTATION):
                $type = 'object';
                break;
            case $this->reader->getClassAnnotation($reflectionClass, self::NESTED_ANNOTATION):
                $type = 'nested';
                break;
            default:
                throw new \LogicException(
                    sprintf(
                        '%s should have @ObjectType or @Nested annotation to be used as embeddable object.',
                        $className
                    )
                );
        }

        $this->objects[$namespace] = [
            'type' => $type,
            'properties' => $this->getProperties($reflectionClass),
        ];

        return $this->objects[$namespace];
    }
private function getObjectMapping($className, $directory)
    {
        $namespace = $this->finder->getNamespace($className, $directory);

        if (array_key_exists($namespace, $this->objects)) {
            return $this->objects[$namespace];
        }

        $reflectionClass = new \ReflectionClass($namespace);

        switch (true) {
            case $this->reader->getClassAnnotation($reflectionClass, self::OBJECT_ANNOTATION):
                $type = 'object';
                break;
            case $this->reader->getClassAnnotation($reflectionClass, self::NESTED_ANNOTATION):
                $type = 'nested';
                break;
            default:
                throw new \LogicException(
                    sprintf(
                        '%s should have @ObjectType or @Nested annotation to be used as embeddable object.',
                        $className
                    )
                );
        }

        $this->objects[$namespace] = [
            'type' => $type,
            'properties' => $this->getProperties($reflectionClass),
        ];

        return $this->objects[$namespace];
    }
private function getObjectMapping ( $ className , $ directory ) { $ namespace = $ this -> finder -> getNamespace ( $ className , $ directory ) ; if ( array_key_exists ( $ namespace , $ this -> objects ) ) { return $ this -> objects [ $ namespace ] ; } $ reflectionClass = new \ ReflectionClass ( $ namespace ) ; switch ( true ) { case $ this -> reader -> getClassAnnotation ( $ reflectionClass , self :: OBJECT_ANNOTATION ) : $ type = 'object' ; break ; case $ this -> reader -> getClassAnnotation ( $ reflectionClass , self :: NESTED_ANNOTATION ) : $ type = 'nested' ; break ; default : throw new \ LogicException ( sprintf ( '%s should have @ObjectType or @Nested annotation to be used as embeddable object.' , $ className ) ) ; } $ this -> objects [ $ namespace ] = [ 'type' => $ type , 'properties' => $ this -> getProperties ( $ reflectionClass ) , ] ; return $ this -> objects [ $ namespace ] ; }
Returns object mapping.

Loads from cache if it's already loaded.

@param string $className
@param string $directory Name of the directory where the Document is

@return array
Returns object mapping .