jqh 5 лет назад
Родитель
Сommit
ce2183463e
3 измененных файлов с 54 добавлено и 2 удалено
  1. 1 1
      config/admin.php
  2. 1 1
      src/Console/stubs/config.stub
  3. 52 0
      src/Support/Helper.php

+ 1 - 1
config/admin.php

@@ -221,7 +221,7 @@ return [
     'upload' => [
 
         // Disk in `config/filesystem.php`.
-        'disk' => 'admin',
+        'disk' => 'public',
 
         // Image and file upload path under the disk above.
         'directory' => [

+ 1 - 1
src/Console/stubs/config.stub

@@ -221,7 +221,7 @@ return [
     'upload' => [
 
         // Disk in `config/filesystem.php`.
-        'disk' => 'admin',
+        'disk' => 'public',
 
         // Image and file upload path under the disk above.
         'directory' => [

+ 52 - 0
src/Support/Helper.php

@@ -658,4 +658,56 @@ class Helper
 
         return rtrim(mb_substr($value, 0, $limit, 'UTF-8')).$end;
     }
+
+    /**
+     * 获取类名或对象的文件路径.
+     *
+     * @param string|object $class
+     *
+     * @return string
+     *
+     * @throws \ReflectionException
+     */
+    public static function guessClassFileName($class)
+    {
+        if (is_object($class)) {
+            $class = get_class($class);
+        }
+
+        if (class_exists($class)) {
+            return (new \ReflectionClass($class))->getFileName();
+        }
+
+        $class = trim($class, '\\');
+
+        $composer = Composer::parse(base_path('composer.json'));
+
+        $map = collect($composer->autoload['psr-4'] ?? [])->mapWithKeys(function ($path, $namespace) {
+            $namespace = trim($namespace, '\\').'\\';
+
+            return [$namespace => [$namespace, $path]];
+        })->sortBy(function ($_, $namespace) {
+            return strlen($namespace);
+        }, SORT_REGULAR, true);
+
+        $prefix = explode($class, '\\')[0];
+
+        if ($map->isEmpty()) {
+            if (Str::startsWith($class, 'App\\')) {
+                $values = ['App\\', 'app/'];
+            }
+        } else {
+            $values = $map->filter(function ($_, $k) use ($class) {
+                return Str::startsWith($class, $k);
+            })->first();
+        }
+
+        if (empty($values)) {
+            $values = [$prefix.'\\', Helper::slug($prefix).'/'];
+        }
+
+        [$namespace, $path] = $values;
+
+        return base_path(str_replace([$namespace, '\\'], [$path, '/'], $class)).'.php';
+    }
 }