解锁 Laravel Stubs 的魔力:增强你的代码生成能力🚀

大家好,Laravel 爱好者们!🖐️ 欢迎来到 Laravel 存根的神奇世界——这是一个强大的工具,可以为您节省无数小时的重复编码时间。如果您曾经希望有一个编码助手来处理日常任务,那么您的愿望即将实现。在这篇文章中,我们将探讨什么是 Laravel 存根、如何使用它们以及如何定制它们以满足您的需求。

什么是 Laravel Stubs?🛠️

将 Laravel 存根视为代码的蓝图。想象一下建造一栋房子:您不会每次都从头开始。相反,您会使用蓝图 — 针对每个项目进行调整,但始终从坚实的基础开始。Laravel 存根的工作方式相同。它们是预先设计的模板,可让您快速一致地生成代码,就像为新建筑奠定基础一样。

当您运行“php artisan make:controller”、“php artisan make:model”等命令时,Laravel 会使用这些存根来创建样板代码。通过自定义这些存根,您可以确保生成的代码完全符合项目的特定需求,就像建筑师自定义蓝图以满足建筑物的独特要求一样。

为什么要关心 Stubs?🧐

  • 一致性:保持代码库在每个文件中始终清洁且统一。
  • 效率:通过即时生成重复代码来加速您的工作流程。
  • 定制:微调您的存根以精确匹配您项目的独特需求。
  • Laravel Stubs 入门

    步骤 1:找到默认存根🗂️

    Laravel 的默认存根存储在 `vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs` 目录中。将此目录视为所有构造蓝图的存储空间。花点时间浏览它 - 您将找到控制器、模型、迁移等模板。

    第 2 步:发布存根

    要开始自定义存根,您需要将它们放入项目的根目录中。运行以下 Artisan 命令:

    php artisan stub:publish

    这将在您的 Laravel 应用程序的根目录中创建一个 `stubs` 目录。这就像在现场设置您自己的蓝图站,随时可以进行定制。

    步骤 3:自定义你的存根

    现在,真正的乐趣开始了——自定义存根以满足您的需求。打开“stubs”目录并根据需要编辑文件。例如,如果您希望所有控制器默认包含特定特征,则可以修改“controller.stub”:

    // controller.stub example
    namespace {{ namespace }};
    
    use App\Traits\YourMagicTrait;
    use Illuminate\Http\Request;
    class {{ class }} extends Controller
    {
        use YourMagicTrait;
    
        // Your custom methods
    }

    步骤 4:使用自定义存根生成代码⚡

    一旦自定义存根到位,生成代码就变得轻而易举。照常使用 Artisan 命令,Laravel 将使用您的自定义存根:

    php artisan make:controller MagicController

    这就像拥有一支施工队,他们确切地知道每一根横梁和墙壁的位置,从而节省您的时间并确保一致性。

    实际例子🎯

    示例 1:自定义控制器存根

    假设你总是在控制器中使用一个特定的特征。修改 `controller.stub` 如下:

    use App\Traits\YourMagicTrait;
    
    class {{ class }} extends Controller
    {
        use YourMagicTrait;
    
        // Additional methods
    }

    示例 2:自定义迁移存根

    如果您希望每个新的数据库表都包含默认列,例如名称为活动的列,请编辑“migration.stub”:

    public function up()
    {
        Schema::create('{{ table }}', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
            $table->boolean('active')->default();
            // Your default columns
        });
    }

    示例 3:高级控制器自定义

    假设您经常向控制器添加特定逻辑或依赖项 — 例如将自定义 HVAC 系统集成到每栋新建筑中。自定义您的 `controller.stub` 以默认包含以下内容:

    // controller.stub example
    namespace {{ namespace }};
    
    use App\Services\YourCustomService;
    use Illuminate\Http\Request;
    
    class {{ class }} extends Controller
    {
        public function __construct(
          protected YourCustomService $service
        ) {}
    
        // Your custom methods
    }

    高级定制技巧🧠

    1.使用占位符变量

    Laravel 存根使用占位符变量,例如 `{{ namespace }}`、`{{ class }}` 等,这些变量在生成文件时会动态替换。您甚至可以添加自定义占位符,就像在蓝图上标记特定位置以添加独特功能一样:

    // custom.stub
    namespace {{ namespace }};
    
    class {{ class }}
    {
        public function customMethod()
        {
            // {{ customPlaceholder }}
        }
    }

    2. 创建自定义 Artisan 命令

    如果您想将自动化提升到一个新的水平,创建自定义 Artisan 命令可以让您的工作流程更加顺畅。Laravel 可以轻松创建命令,这些命令可以利用您的自定义存根:

  • 创建新命令:使用 Artisan 命令生成新的自定义命令:
  • php artisan make:command CustomMakeCommand

    此命令在“app/Console/Commands/CustomMakeCommand.php”中生成一个新文件。

    **2. 定义命令逻辑**:打开生成的文件并定义命令的逻辑。以下是您可以在新命令中使用自定义存根的方法:

    // CustomMakeCommand.php
    namespace App\Console\Commands;
    
    use Illuminate\Console\Command;
    
    class CustomMakeCommand extends Command
    {
        protected $signature = 'make:custom {name}';
        protected $description = 'Create a custom class with a custom stub';
    
        public function handle()
        {
            $name = $this->argument('name');
            $stub = file_get_contents(base_path('stubs/custom.stub'));
            $content = str_replace('{{ class }}', $name, $stub);
            file_put_contents(app_path("{$name}.php"), $content);
            $this->info("Custom class {$name} created successfully!");
        }
    }

    **3. 运行您的自定义命令**:您现在可以像任何其他 Artisan 命令一样使用此自定义命令:

    php artisan make:custom MyCustomClass

    此命令将使用您的自定义存根模板生成一个新的类文件,从而节省您的时间并确保一致性。

    结论

    Laravel 存根是一项强大的功能,可以节省您的时间并确保整个项目的一致性。通过自定义这些模板,您可以简化工作流程并轻松保持高编码标准。只要发挥一点创造力,您甚至可以将对 Laravel 存根的掌握转化为一项有利可图的事业。

    所以,继续吧——解锁 Laravel 存根的魔力,让它们为你创造奇迹。记住,能力越大,责任越大。

    祝您编码愉快,愿存根永远对您有利!🚀