first commit
This commit is contained in:
123
modules/Develop/Support/Generate/Create/Route.php
Normal file
123
modules/Develop/Support/Generate/Create/Route.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Develop\Support\Generate\Create;
|
||||
|
||||
use Catch\CatchAdmin;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* Route
|
||||
*/
|
||||
class Route extends Creator
|
||||
{
|
||||
/**
|
||||
* @param string $controller
|
||||
*/
|
||||
public function __construct(public readonly string $controller)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* get file
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFile(): string
|
||||
{
|
||||
return CatchAdmin::getModuleRoutePath($this->module);
|
||||
}
|
||||
|
||||
/**
|
||||
* get content
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getContent(): string
|
||||
{
|
||||
// route 主要添加两个点
|
||||
// use Controller
|
||||
// 添加路由
|
||||
$route = Str::of('');
|
||||
|
||||
$originContent = File::get(CatchAdmin::getModuleRoutePath($this->module));
|
||||
|
||||
// 如果已经有 controller,就不再追加路由
|
||||
if (Str::of($originContent)->contains($this->getUserController())) {
|
||||
return $originContent;
|
||||
}
|
||||
|
||||
File::lines(CatchAdmin::getModuleRoutePath($this->module))
|
||||
->each(function ($line) use (&$route) {
|
||||
if (Str::of($line)->contains('Route::prefix')) {
|
||||
$route = $route->trim(PHP_EOL)
|
||||
->newLine()
|
||||
->append($this->getUserController())
|
||||
->append(';')
|
||||
->newLine(2)
|
||||
->append($line)
|
||||
->newLine();
|
||||
} else {
|
||||
$route = $route->append($line)->newLine();
|
||||
}
|
||||
});
|
||||
|
||||
$apiResource = "Route::apiResource('{api}', {controller}::class);";
|
||||
|
||||
return Str::of($route->toString())->replace(
|
||||
['{module}', '//next'],
|
||||
[
|
||||
lcfirst($this->module),
|
||||
Str::of($apiResource)->replace(['{api}', '{controller}'], [$this->getApiString(), $this->getControllerName()])
|
||||
->prepend("\t")
|
||||
->prepend(PHP_EOL)
|
||||
->newLine()->append("\t//next")]
|
||||
)->toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* get api
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getApiString(): string
|
||||
{
|
||||
return Str::of($this->getControllerName())->remove('Controller')->snake('_')->replace('_', '/')->toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* get api route
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getApiRute(): string
|
||||
{
|
||||
return lcfirst($this->module).'/'.$this->getApiString();
|
||||
}
|
||||
|
||||
/**
|
||||
* use controller
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getUserController(): string
|
||||
{
|
||||
return 'use '.CatchAdmin::getModuleControllerNamespace($this->module).$this->getControllerName();
|
||||
}
|
||||
|
||||
/**
|
||||
* get controller name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getControllerName(): string
|
||||
{
|
||||
return Str::of($this->controller)->whenContains('Controller', function ($value) {
|
||||
return Str::of($value)->ucfirst();
|
||||
}, function ($value) {
|
||||
return Str::of($value)->append('Controller')->ucfirst();
|
||||
})->toString();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user