run.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. $executionStart = microtime(true);
  3. $memoryStart = memory_get_usage(true);
  4. $em = include 'em.php';
  5. /**
  6. * initialized in em.php
  7. *
  8. * Gedmo\Translatable\TranslationListener
  9. */
  10. $translatable;
  11. $repository = $em->getRepository('Entity\Category');
  12. $food = $repository->findOneByTitle('Food');
  13. if (!$food) {
  14. // lets create some categories
  15. $food = new Entity\Category;
  16. $food->setTitle('Food');
  17. $fruits = new Entity\Category;
  18. $fruits->setParent($food);
  19. $fruits->setTitle('Fruits');
  20. $apple = new Entity\Category;
  21. $apple->setParent($fruits);
  22. $apple->setTitle('Apple');
  23. $milk = new Entity\Category;
  24. $milk->setParent($food);
  25. $milk->setTitle('Milk');
  26. $em->persist($food);
  27. $em->persist($milk);
  28. $em->persist($fruits);
  29. $em->persist($apple);
  30. $em->flush();
  31. // translate into LT
  32. $translatable->setTranslatableLocale('lt');
  33. $food->setTitle('Maistas');
  34. $fruits->setTitle('Vaisiai');
  35. $apple->setTitle('Obuolys');
  36. $milk->setTitle('Pienas');
  37. $em->persist($food);
  38. $em->persist($milk);
  39. $em->persist($fruits);
  40. $em->persist($apple);
  41. $em->flush();
  42. // set locale back to en
  43. $translatable->setTranslatableLocale('en');
  44. }
  45. // builds tree
  46. $build = function ($nodes) use (&$build, $repository) {
  47. $result = '';
  48. foreach ($nodes as $node) {
  49. $result .= str_repeat("-", $node->getLevel())
  50. . $node->getTitle()
  51. . '('.$node->getSlug().')'
  52. . PHP_EOL
  53. ;
  54. if ($repository->childCount($node, false)) {
  55. $result .= $build($repository->children($node, true));
  56. }
  57. }
  58. return $result;
  59. };
  60. $nodes = $repository->getRootNodes();
  61. echo $build($nodes).PHP_EOL.PHP_EOL;
  62. // change locale
  63. $translatable->setTranslatableLocale('lt');
  64. $nodes = $repository->getRootNodes(); // reload in diferent locale
  65. echo $build($nodes).PHP_EOL.PHP_EOL;
  66. $ms = round(microtime(true) - $executionStart, 4) * 1000;
  67. $mem = round((memory_get_usage(true) - $memoryStart) / 1000000, 2);
  68. echo "Execution took: {$ms} ms, memory consumed: {$mem} Mb";