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