Ok, I just runs into these problems ...
So, my understanding is
=> that the yml and xml format is broken and there is no solution.
=> The only stable solution is to use annotation.
I don't get your explanation from the point 2. The class can be non existant
but the definition is set inside the XML or yml file. The solution will be to
add an extra check to load information from these files.
On 22 nov. 2010, at 16:28, 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).
>
> 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
--
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