123 lines
3.2 KiB
PHP
123 lines
3.2 KiB
PHP
![]() |
<?php
|
|||
|
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | CatchAdmin [Just Like ~ ]
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Copyright (c) 2017~2021 https://catchadmin.com All rights reserved.
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Licensed ( https://github.com/JaguarJack/catchadmin-laravel/blob/master/LICENSE.md )
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Author: JaguarJack [ njphper@gmail.com ]
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
declare(strict_types=1);
|
|||
|
|
|||
|
use Illuminate\Console\Application as Artisan;
|
|||
|
use Illuminate\Console\Command;
|
|||
|
use Illuminate\Support\Arr;
|
|||
|
use Illuminate\Support\Collection;
|
|||
|
use Illuminate\Support\Facades\DB;
|
|||
|
use Illuminate\Support\Str;
|
|||
|
use Symfony\Component\Finder\Finder;
|
|||
|
use Symfony\Component\VarDumper\VarDumper;
|
|||
|
|
|||
|
/**
|
|||
|
* load commands
|
|||
|
*/
|
|||
|
if (! function_exists('loadCommands')) {
|
|||
|
/**
|
|||
|
* @throws ReflectionException
|
|||
|
*/
|
|||
|
function loadCommands($paths, $namespace, $searchPath = null): void
|
|||
|
{
|
|||
|
if (! $searchPath) {
|
|||
|
$searchPath = dirname($paths).DIRECTORY_SEPARATOR;
|
|||
|
}
|
|||
|
|
|||
|
$paths = Collection::make(Arr::wrap($paths))->unique()->filter(function ($path) {
|
|||
|
return is_dir($path);
|
|||
|
});
|
|||
|
|
|||
|
if ($paths->isEmpty()) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
foreach ((new Finder())->in($paths->toArray())->files() as $command) {
|
|||
|
$command = $namespace.str_replace(['/', '.php'], ['\\', ''], Str::after($command->getRealPath(), $searchPath));
|
|||
|
|
|||
|
if (is_subclass_of($command, Command::class) &&
|
|||
|
! (new ReflectionClass($command))->isAbstract()) {
|
|||
|
Artisan::starting(function ($artisan) use ($command) {
|
|||
|
$artisan->resolve($command);
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* table prefix
|
|||
|
*/
|
|||
|
if (! function_exists('withTablePrefix')) {
|
|||
|
function withTablePrefix(string $table): string
|
|||
|
{
|
|||
|
return DB::connection()->getTablePrefix().$table;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* get guard name
|
|||
|
*/
|
|||
|
if (! function_exists('getGuardName')) {
|
|||
|
function getGuardName(): string
|
|||
|
{
|
|||
|
$guardKeys = array_keys(config('catch.auth.guards'));
|
|||
|
|
|||
|
if (count($guardKeys)) {
|
|||
|
return $guardKeys[0];
|
|||
|
}
|
|||
|
|
|||
|
return 'admin';
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* get table columns
|
|||
|
*/
|
|||
|
if (! function_exists('getTableColumns')) {
|
|||
|
function getTableColumns(string $table): array
|
|||
|
{
|
|||
|
$SQL = 'desc '.withTablePrefix($table);
|
|||
|
|
|||
|
$columns = [];
|
|||
|
|
|||
|
foreach (DB::select($SQL) as $column) {
|
|||
|
$columns[] = $column->Field;
|
|||
|
}
|
|||
|
|
|||
|
return $columns;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (! function_exists('dd_')) {
|
|||
|
/**
|
|||
|
* @param mixed ...$vars
|
|||
|
* @return never
|
|||
|
*/
|
|||
|
function dd_(...$vars): never
|
|||
|
{
|
|||
|
if (! in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && ! headers_sent()) {
|
|||
|
header('HTTP/1.1 500 Internal Server Error');
|
|||
|
}
|
|||
|
|
|||
|
header('Access-Control-Allow-Origin: *');
|
|||
|
header('Access-Control-Allow-Methods: *');
|
|||
|
header('Access-Control-Allow-Headers: *');
|
|||
|
|
|||
|
foreach ($vars as $v) {
|
|||
|
VarDumper::dump($v);
|
|||
|
}
|
|||
|
|
|||
|
exit(1);
|
|||
|
}
|
|||
|
}
|