This commit is contained in:
2020-09-11 18:53:09 +08:00
parent 0196e16168
commit 71fe4eee15
5 changed files with 250 additions and 2 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ class DatabasesProviders extends Providers
/**
* @param $name
* @return DatabasesProviders
* @return Connection
* @throws ConfigException
* @throws Exception
*/
+13 -1
View File
@@ -51,7 +51,7 @@ class Gii
* @throws ConfigException
* @throws Exception
*/
public function run($db, $input)
public function run(?Connection $db, $input)
{
$this->input = $input;
if (!empty($db)) $this->db = $db;
@@ -65,6 +65,18 @@ class Gii
$task = new GiiTask();
$task->setInput($this->input);
return $task->generate();
case 'interceptor':
$task = new GiiInterceptor();
$task->setInput($this->input);
return $task->generate();
case 'limits':
$task = new GiiLimits();
$task->setInput($this->input);
return $task->generate();
case 'middleware':
$task = new GiiMiddleware();
$task->setInput($this->input);
return $task->generate();
default:
return $this->getModel($make, $input);
}
+79
View File
@@ -0,0 +1,79 @@
<?php
namespace Gii;
use Exception;
use Snowflake\Snowflake;
/**
* Class GiiInterceptor
* @package Gii
*/
class GiiInterceptor extends GiiBase
{
public $tableName;
public $visible;
public $res;
public $fields;
/**
* @return string[]
* @throws Exception
*/
public function generate()
{
$managerName = $this->input->get('name', null);
if (empty($managerName)) {
throw new Exception('文件名称不能为空~');
}
$html = '<?php
namespace App\Http\Interceptor;
use Closure;
use HttpServer\Http\Request;
use HttpServer\IInterface\Interceptor;
';
$managerName = ucfirst($managerName);
$html .= '
/**
* Class ' . $managerName . '
* @package App\Http\Interceptor
*/
class ' . $managerName . 'Interceptor implements Interceptor
{
/**
* @param Request $request
* @param Closure $closure
* @return mixed
*/
public function Interceptor(Request $request, Closure $closure)
{
return $closure($request);
}
}';
$file = APP_PATH . '/app/Interceptor/' . $managerName . 'Interceptor.php';
if (file_exists($file)) {
unlink($file);
}
Snowflake::writeFile($file, $html);
return [$managerName . 'Interceptor.php'];
}
}
+79
View File
@@ -0,0 +1,79 @@
<?php
namespace Gii;
use Exception;
use Snowflake\Snowflake;
/**
* Class GiiLimits
* @package Gii
*/
class GiiLimits extends GiiBase
{
public $tableName;
public $visible;
public $res;
public $fields;
/**
* @return string[]
* @throws Exception
*/
public function generate()
{
$managerName = $this->input->get('name', null);
if (empty($managerName)) {
throw new Exception('文件名称不能为空~');
}
$html = '<?php
namespace App\Http\Limits;
use Closure;
use HttpServer\Http\Request;
use HttpServer\IInterface\Limits;
';
$managerName = ucfirst($managerName);
$html .= '
/**
* Class ' . $managerName . 'Limits
* @package App\Http\Limits
*/
class ' . $managerName . 'Limits implements Limits
{
/**
* @param Request $request
* @param Closure $closure
* @return mixed
*/
public function next(Request $request, Closure $closure)
{
return $closure($request);
}
}';
$file = APP_PATH . '/app/Interceptor/' . $managerName . 'Limits.php';
if (file_exists($file)) {
unlink($file);
}
Snowflake::writeFile($file, $html);
return [$managerName . 'Limits.php'];
}
}
+78
View File
@@ -0,0 +1,78 @@
<?php
namespace Gii;
use Exception;
use Snowflake\Snowflake;
/**
* Class GiiMiddleware
* @package Gii
*/
class GiiMiddleware extends GiiBase
{
public $tableName;
public $visible;
public $res;
public $fields;
/**
* @return string[]
* @throws Exception
*/
public function generate()
{
$managerName = $this->input->get('name', null);
if (empty($managerName)) {
throw new Exception('文件名称不能为空~');
}
$html = '<?php
namespace App\Http\Middleware;
use Closure;
use HttpServer\Http\Request;
use HttpServer\IInterface\Middleware;
';
$managerName = ucfirst($managerName);
$html .= '
/**
* Class ' . $managerName . 'Middleware
* @package App\Http\Middleware
*/
class ' . $managerName . 'Middleware implements Middleware
{
/**
* @param Request $request
* @param Closure $closure
* @return mixed
*/
public function handler(Request $request, Closure $closure)
{
return $closure($request);
}
}';
$file = APP_PATH . '/app/Middleware/' . $managerName . 'Middleware.php';
if (file_exists($file)) {
unlink($file);
}
Snowflake::writeFile($file, $html);
return [$managerName . 'Middleware.php'];
}
}