Guest User

Untitled

a guest
May 26th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. <?php
  2.  
  3. namespace DoctrineExtensions\Hierarchical;
  4.  
  5. use DoctrineExtensions\Hierarchical\MaterializedPath\MaterializedPathNodeInfo,
  6. DoctrineExtensions\Hierarchical\AdjacencyList\AdjacencyListNodeInfo,
  7. DoctrineExtensions\Hierarchical\NestedSet\NestedSetNodeInfo,
  8. Doctrine\ORM\EntityManager;
  9.  
  10. class HierarchicalManagerFactory
  11. {
  12. /**
  13. * Factory method to create a Hierarchical Manager for the specified class
  14. *
  15. * @param EntityManager $em
  16. * @param string $className
  17. * @return AbstractManager
  18. */
  19. public static function getManager(EntityManager $em, $className)
  20. {
  21. $meta = $em->getClassMetadata($className);
  22. $reflClass = $meta->reflClass;
  23. if ($reflClass->implementsInterface('MaterializedPathNodeInfo')) {
  24. return new MaterializedPathHiearchicalManager($em, $meta);
  25. } elseif ($reflClass->implementsInterface('NestedSetNodeInfo')) {
  26. return new NestedSetHierarchicalManager($em, $meta);
  27. }
  28.  
  29. throw new HierarchicalException('Provided entity does not implement any known Node interface');
  30. }
  31. }
Add Comment
Please, Sign In to add comment