Resource.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace Goodquestiondev;
  3. use Illuminate\Support\Str;
  4. class Resource
  5. {
  6. /**
  7. * The default actions for a resourceful controller.
  8. *
  9. * @var array
  10. */
  11. public $resourceDefaults = ['index', 'create', 'store', 'show', 'edit', 'update', 'destroy'];
  12. /**
  13. * The list of possible uris
  14. *
  15. * @var array
  16. */
  17. public $uriList = [];
  18. /**
  19. * Create a new resource registrar instance.
  20. *
  21. * @param string $type
  22. * @param string $uri
  23. * @return void
  24. */
  25. public function __construct(string $uri)
  26. {
  27. $this->uri = $uri;
  28. $this->setUriList($uri);
  29. }
  30. /**
  31. * Get Possible Uris
  32. *
  33. * @param string $path The request path
  34. *
  35. * @return void
  36. */
  37. public function setUriList($uri)
  38. {
  39. $parts = explode(".", $uri);
  40. if (count($parts) == 1) {
  41. $singular = Str::singular($parts[0]);
  42. $this->uriList[] = "{$parts[0]}";
  43. $this->uriList[] = "{$parts[0]}/{{$singular}}";
  44. $this->uriList[] = "{$parts[0]}/create";
  45. $this->uriList[] = "{$parts[0]}/{{$singular}}/edit";
  46. }
  47. if (count($parts) == 2) {
  48. $singularOne = Str::singular($parts[0]);
  49. $singularTwo = Str::singular($parts[1]);
  50. $this->uriList[] = "{$parts[0]}";
  51. $this->uriList[] = "{$parts[0]}/{{$singularOne}}/{$parts[1]}";
  52. $this->uriList[] = "{$parts[0]}/{{$singularOne}}/{$parts[1]}/create";
  53. $this->uriList[] = "{$parts[1]}/{{$singularTwo}}";
  54. $this->uriList[] = "{$parts[1]}/{{$singularTwo}}/edit";
  55. }
  56. }
  57. /**
  58. * Get Possible Uris
  59. *
  60. * @param string $path The request path
  61. *
  62. * @return void
  63. */
  64. public function handleRequest($verb, $path, $uriInfo, $content)
  65. {
  66. $route = Route::getInstance();
  67. $route->resources[$this->uri];
  68. }
  69. }