RepositoryCreator.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace Dcat\Admin\Scaffold;
  3. class RepositoryCreator
  4. {
  5. protected $path = 'Admin/Repositories';
  6. /**
  7. * @param string $controllerClass
  8. * @param string $modelClass
  9. *
  10. * @return string
  11. */
  12. public function create(string $controllerClass, string $modelClass)
  13. {
  14. $baseController = class_basename($controllerClass);
  15. $controller = str_replace('Controller', '', $baseController);
  16. $model = class_basename($modelClass);
  17. $files = app('files');
  18. $path = app_path("{$this->path}/{$controller}.php");
  19. $dir = dirname($path);
  20. if (! is_dir($dir)) {
  21. $files->makeDirectory($dir, 0755, true);
  22. }
  23. if (is_file($path)) {
  24. return;
  25. }
  26. $content = $files->get($this->stub());
  27. $files->put($path, str_replace([
  28. '{controllerClass}',
  29. '{baseController}',
  30. '{controller}',
  31. '{modelClass}',
  32. '{model}',
  33. ], [
  34. $controllerClass,
  35. $baseController,
  36. $controller,
  37. $modelClass,
  38. $model,
  39. ], $content));
  40. return $path;
  41. }
  42. protected function stub()
  43. {
  44. return __DIR__.'/stubs/repository.stub';
  45. }
  46. }