/** * @param array $fields * @return array */ protected function normalizeFields(array &$fields) { $converter = new CamelCaseToSnakeCaseNameConverter(); foreach ($fields as $key => $fieldDefinition) { if (strpos($fieldDefinition['name'], '_')) { $fields[$key]['name'] = strtolower($fieldDefinition['name']); } else { $fields[$key]['name'] = $converter->normalize($fieldDefinition['name']); } } return $fields; }
/** * Executes the command. * * @param InputInterface $input * @param OutputInterface $output */ protected function execute(InputInterface $input, OutputInterface $output) { $force = $input->getOption('force'); $db_driver = $this->getContainer()->getParameter('nyroDev_utility.db_driver'); $dirname = null; switch ($db_driver) { case 'orm': $dirname = 'Entity'; break; } if ($dirname) { $sourceDir = realpath(__DIR__ . '/../Model/' . $dirname); $converter = new CamelCaseToSnakeCaseNameConverter(); $dbService = $this->getContainer()->get('nyrocms_db'); $namespace = $dbService->getNamespace(); $originalNamespace = 'NyroDev\\NyroCmsBundle\\Model\\' . $dirname; $srcDir = dirname($this->getContainer()->getParameter('kernel.root_dir')) . '/src'; $finder = new Finder(); $sources = $finder->files()->name('*.php')->in($sourceDir); $fs = new Filesystem(); foreach ($sources as $source) { /* @var $source SplFileInfo */ $classname = lcfirst(substr($source->getBasename(), 0, -4)); $classnameIdent = $converter->normalize($classname); $src = $source->getRealPath(); $dstClass = $dbService->getClass($classnameIdent, false); $dst = str_replace(array('/', '\\'), array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR), $srcDir . '/' . $namespace . '/' . $dstClass . '.php'); $exists = $fs->exists($dst); if ($force || !$exists) { $output->writeln(($exists ? 'Overwriting' : 'Writing') . ': ' . $dst); $fs->dumpFile($dst, str_replace($originalNamespace, $namespace, file_get_contents($src))); } else { $output->writeln('Exists: ' . $dst); } } } else { $output->writeln($db_driver . ' is not supported.'); } }
public function normalize($propertyName) { return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName; }
/** * @dataProvider attributeProvider */ public function testNormalize($underscored, $lowerCamelCased) { $nameConverter = new CamelCaseToSnakeCaseNameConverter(); $this->assertEquals($nameConverter->normalize($lowerCamelCased), $underscored); }