Neos\Kickstarter\Service\GeneratorService::generateRepository PHP Method

generateRepository() public method

Generate a repository for a model given a model name and package key
public generateRepository ( string $packageKey, string $modelName, boolean $overwrite = false ) : array
$packageKey string The package key
$modelName string The name of the model
$overwrite boolean Overwrite any existing files?
return array An array of generated filenames
    public function generateRepository($packageKey, $modelName, $overwrite = false)
    {
        list($baseNamespace, $namespaceEntryPath) = $this->getPrimaryNamespaceAndEntryPath($this->packageManager->getPackage($packageKey));
        $modelName = ucfirst($modelName);
        $repositoryClassName = $modelName . 'Repository';
        $namespace = trim($baseNamespace, '\\') . '\\Domain\\Repository';
        $templatePathAndFilename = 'resource://Neos.Kickstarter/Private/Generator/Repository/RepositoryTemplate.php.tmpl';
        $contextVariables = array();
        $contextVariables['packageKey'] = $packageKey;
        $contextVariables['modelName'] = $modelName;
        $contextVariables['repositoryClassName'] = $repositoryClassName;
        $contextVariables['namespace'] = $namespace;
        $fileContent = $this->renderTemplate($templatePathAndFilename, $contextVariables);
        $repositoryFilename = $repositoryClassName . '.php';
        $repositoryPath = Files::concatenatePaths([$namespaceEntryPath, 'Domain/Repository']) . '/';
        $targetPathAndFilename = $repositoryPath . $repositoryFilename;
        $this->generateFile($targetPathAndFilename, $fileContent, $overwrite);
        return $this->generatedFiles;
    }

Usage Example

 /**
  * Kickstart a new domain repository
  *
  * This command generates a new domain repository class for the given model name.
  *
  * @param string $packageKey The package key
  * @param string $modelName The name of the domain model class
  * @param boolean $force Overwrite any existing repository.
  * @return string
  * @see neos.kickstarter:kickstart:model
  */
 public function repositoryCommand($packageKey, $modelName, $force = false)
 {
     $this->validatePackageKey($packageKey);
     if (!$this->packageManager->isPackageAvailable($packageKey)) {
         $this->outputLine('Package "%s" is not available.', array($packageKey));
         exit(2);
     }
     $generatedFiles = $this->generatorService->generateRepository($packageKey, $modelName, $force);
     $this->outputLine(implode(PHP_EOL, $generatedFiles));
 }