コード例 #1
0
 public function onRegistration(BundleTranslationsEvent $event)
 {
     $bundleAlias = $event->getBundleAlias();
     $bundle = $this->kernel->getBundle($bundleAlias);
     $bundleNamespace = $bundle->getNamespace();
     $bundlePath = $bundle->getPath();
     if (!is_dir("{$bundlePath}/Api")) {
         return;
     }
     $classes = $this->classCollector->collect("{$bundlePath}/Api", false, false);
     foreach ($classes as $class) {
         $classRefl = new ReflectionClass($class);
         $fileLocation = "@" . str_replace($bundlePath, $bundleAlias, $classRefl->getFileName());
         $traitProps = $this->getTraitProperties($classRefl);
         foreach ($classRefl->getProperties() as $propRefl) {
             if ($propRefl->class !== $class || array_key_exists($propRefl->name, $traitProps)) {
                 continue;
             }
             $name = $this->annotationReader->getPropertyAnnotation($propRefl, "Agit\\ApiBundle\\Annotation\\Property\\Name");
             if (!$name) {
                 continue;
             }
             $translation = new Translation($name->get("context"), $name->get("value"));
             $translation->addReference($fileLocation);
             $event->addTranslation($translation);
             $names[] = $name->get("value");
         }
     }
 }