. */ namespace Doctrine\ORM\Tools; /** * Class to generate entity repository classes * * * @link www.doctrine-project.org * @since 2.0 * @author Benjamin Eberlei * @author Guilherme Blanco * @author Jonathan Wage * @author Roman Borschel */ class EntityRepositoryGenerator { protected static $_template = ' use Doctrine\ORM\EntityRepository; /** * * * This class was generated by the Doctrine ORM. Add your own custom * repository methods below. */ class extends EntityRepository { } '; public function generateEntityRepositoryClass($fullClassName) { $className = substr($fullClassName, strrpos($fullClassName, '\\') + 1, strlen($fullClassName)); $variables = array( '' => $this->generateEntityRepositoryNamespace($fullClassName), '' => $className ); return str_replace(array_keys($variables), array_values($variables), self::$_template); } /** * Generate the namespace statement, if class do not have namespace, return empty string instead * * @param string $fullClassName The full repository class name * @return string $namespace */ private function generateEntityRepositoryNamespace($fullClassName) { $namespace = substr($fullClassName, 0, strrpos($fullClassName, '\\')); return $namespace ? 'namespace ' . $namespace . ';' : ''; } public function writeEntityRepositoryClass($fullClassName, $outputDirectory) { $code = $this->generateEntityRepositoryClass($fullClassName); $path = $outputDirectory . DIRECTORY_SEPARATOR . str_replace('\\', \DIRECTORY_SEPARATOR, $fullClassName) . '.php'; $dir = dirname($path); if ( ! is_dir($dir)) { mkdir($dir, 0777, true); } if ( ! file_exists($path)) { file_put_contents($path, $code); } } }