- 命令刷新model表结构注释

<?php
declare(strict_types=1);
namespace AppCommand;
use HyperfCommandAnnotationCommand;
use HyperfCommandCommand as HyperfCommand;
use PsrContainerContainerInterface;
/**
* @Command
*/
class ModelRefreshCommand extends HyperfCommand
{
/**
* @var ContainerInterface
*/
protected container;
/**
* 执行的命令行.
*
* @var string
*/
protectedname = 'model:refresh';
public function __construct(ContainerInterface container)
{this->container = container;
parent::__construct();
}
public function configure()
{
parent::configure();this->setDescription('项目model初始化');
}
public function handle()
{
this->handleDirectoryFile(function (pathName) {
pathInfo = pathinfo(pathName);
entity = str_replace('/', '', sprintf('%s%s%s',pathInfo['dirname'], '/', pathInfo['filename']));entity = str_replace('src', '', entity);
if (class_exists(entity)) {
model = newentity();
this->info(model->getModel()->getTable() . 'model开始刷新');
this->call('gen:model', [
'table' =>model->getModel()->getTable(),
'--path' => pathInfo['dirname'],
]);this->info(model->getModel()->getTable() . 'model刷新成功');
}
}, 'src', 'Model');
}
/**
* 处理目录文件.
* @param callablecallback 闭包方法
* @param string baseDir 基础目录
* @param stringneedle 需要判断目录的条件
*/
public function handleDirectoryFile(callable callback, stringbaseDir = 'src', string needle = ''): void
{model = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(baseDir));
foreach (model as key =>val) {
if (! is_file(val->getPathName())) {
continue;
}
if (((!needle) || (strpos(val->getPathName(),needle) !== false)) && callback) {callback($val->getPathName());
}
}
}
}
<?php
declare(strict_types=1);
namespace AppCommand;
use HyperfCommandAnnotationCommand;
use HyperfCommandCommand as HyperfCommand;
use PsrContainerContainerInterface;
/**
* @Command
*/
class ModelRefreshCommand extends HyperfCommand
{
/**
* @var ContainerInterface
*/
protected container;
/**
* 执行的命令行.
*
* @var string
*/
protectedname = 'model:refresh';
public function __construct(ContainerInterface container)
{this->container = container;
parent::__construct();
}
public function configure()
{
parent::configure();this->setDescription('项目model初始化');
}
public function handle()
{
this->handleDirectoryFile(function (pathName) {
pathInfo = pathinfo(pathName);
entity = str_replace('/', '', sprintf('%s%s%s',pathInfo['dirname'], '/', pathInfo['filename']));entity = str_replace('src', '', entity);
if (class_exists(entity)) {
model = newentity();
this->info(model->getModel()->getTable() . 'model开始刷新');
this->call('gen:model', [
'table' =>model->getModel()->getTable(),
'--path' => pathInfo['dirname'],
]);this->info(model->getModel()->getTable() . 'model刷新成功');
}
}, 'src', 'Model');
}
/**
* 处理目录文件.
* @param callablecallback 闭包方法
* @param string baseDir 基础目录
* @param stringneedle 需要判断目录的条件
*/
public function handleDirectoryFile(callable callback, stringbaseDir = 'src', string needle = ''): void
{model = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(baseDir));
foreach (model as key =>val) {
if (! is_file(val->getPathName())) {
continue;
}
if (((!needle) || (strpos(val->getPathName(),needle) !== false)) && callback) {callback($val->getPathName());
}
}
}
}




