Atcually this code is in Doctrine. I am not sure why its still in Symfony
(where it was first invented). Probably just something Jonathan hasnt
kicked out yet.

On Mon, 22 Nov 2010 16:44:14 +0100, Fabien Potencier
<[email protected]> wrote:
> On 11/22/10 4:28 PM, Benjamin Eberlei wrote:
>>
>> Two problems:
>>
>> 1. Using XML and YAML Mapping you cannot perform Reflection on the not
>> existing classes (in case of the EntityGenerator). Most of the Class
>> Metadata code however relies on Reflection. This is why the
disconnected
>> stuff is necessary (maybe we should call it Unreflected).
> 
> It's probably a good idea to rename the class. But why is this code 
> within the Symfony bundle and not in Doctrine directly? What is specific

> to Symfony2?
> 
> Fabien
> 
>> 2. The problem is inheritance hierachies cannot be generated from the
>> YAML
>> and XML metadata information (EntityGenerator). Its just not supported
>> conceptually, because the mapping information is missing the
information
>> which class is parent to which other. That is why the
>> DisconnectedClassMetadata is necessary to return an empty array()
instead
>> of trying to call get_parent_classes for a non existant class.
>>
>> greetings,
>> Benjamin
>>
>> On Mon, 22 Nov 2010 15:52:52 +0100, Thomas Rabaix
>> <[email protected]>
>> wrote:
>>> Hello,
>>>
>>> The DoctrineCommand::getBundleMetadatas function uses a
>>> SymfonyDisconnectedClassMetadataFactory which failed to load
information
>>> from parent class as the
>> DisconnectedClassMetadataFactory::getParentClass
>>> always return an empty array. I have made a quick patch here, I don't
>> want
>>> to create a pull request as I don't know any side effect.
>>>
>>> I don't see the point of SymfonyDisconnectedClassMetadataFactory ...
as
>>> the class will never load all entities information.
>>>
>>> diff --git
>> a/src/Symfony/Bundle/DoctrineBundle/Command/DoctrineCommand.php
>>> b/src/Symfony/Bundle/DoctrineBundle/Command/DoctrineCommand.php
>>> index da04e18..96e2e76 100644
>>> --- a/src/Symfony/Bundle/DoctrineBundle/Command/DoctrineCommand.php
>>> +++ b/src/Symfony/Bundle/DoctrineBundle/Command/DoctrineCommand.php
>>> @@ -139,7 +139,8 @@ abstract class DoctrineCommand extends Command
>>>           $bundleMetadatas = array();
>>>           $entityManagers = $this->getDoctrineEntityManagers();
>>>           foreach ($entityManagers as $key =>  $em) {
>>> -            $cmf = new SymfonyDisconnectedClassMetadataFactory($em);
>>> +//            $cmf = new
SymfonyDisconnectedClassMetadataFactory($em);
>>> +            $cmf = $em->getMetadataFactory();
>>>               $metadatas = $cmf->getAllMetadata();
>>>               foreach ($metadatas as $metadata) {
>>>
>>> @@ -151,19 +152,4 @@ abstract class DoctrineCommand extends Command
>>>
>>>           return $bundleMetadatas;
>>>       }
>>> -}
>>> -
>>> -class SymfonyDisconnectedClassMetadataFactory extends
>>> DisconnectedClassMetadataFactory
>>> -{
>>> -    /**
>>> -     * @override
>>> -     */
>>> -    protected function _newClassMetadataInstance($className)
>>> -    {
>>> -        if (class_exists($className)) {
>>> -            return new ClassMetadata($className);
>>> -        } else {
>>> -            return new ClassMetadataInfo($className);
>>> -        }
>>> -    }
>>>   }
>>

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en

Reply via email to