Laravel Artisan 命令完全指南:新手入门与实战进阶

33次阅读
没有评论

在 Laravel 开发中,Artisan 命令行工具是当之无愧的效率神器!它是 Laravel 内置的核心命令行工具,基于 Symfony Console 组件开发,能帮我们一键完成项目启动、代码生成、数据库操作、缓存清理、定时任务等繁琐工作,彻底告别手动创建文件、编写重复代码的低效开发模式。

本文从基础必备命令高频开发命令进阶实用命令自定义命令实战四个维度,全面拆解 Laravel Artisan 命令,新手也能快速上手,进阶开发者可以直接用于项目实战!


一、Artisan 基础:3 个入门必学命令

刚接触 Laravel,先掌握这 3 个命令,就能快速了解 Artisan 的核心用法:

1. 查看所有可用命令

列出项目中所有内置命令 + 自定义命令,分类展示,一目了然:

bash

运行

php artisan list

2. 查看命令帮助文档

遇到不熟悉的命令,直接查询参数、用法说明,无需查文档:

bash

运行

# 示例:查看创建控制器的命令帮助
php artisan help make:controller

3. 启动本地开发服务器

一键启动 Laravel 内置开发服务器,无需配置 Nginx/Apache:

bash

运行

# 默认启动:http://127.0.0.1:8000
php artisan serve

# 指定端口
php artisan serve --port=8080

# 指定局域网访问
php artisan serve --host=0.0.0.0

二、高频开发命令:日常开发天天用

这部分是 Laravel 开发中使用率最高的命令,按功能分类整理,建议收藏!

1. 代码生成命令:一键创建文件

Artisan 最核心的功能就是自动生成代码文件,告别手动新建文件夹、写基础代码:

bash

运行

# 1. 创建控制器
php artisan make:controller UserController
# 创建资源控制器(内置增删改查方法)
php artisan make:controller UserController --resource

# 2. 创建模型
php artisan make:model User
# 组合创建:模型+迁移+控制器(最常用)
php artisan make:model User -mcr

# 3. 创建数据库迁移文件
php artisan make:migration create_users_table

# 4. 创建数据填充器
php artisan make:seeder UserSeeder

# 5. 创建中间件
php artisan make:middleware CheckAuth

# 6. 创建表单验证类
php artisan make:request StoreUserRequest

2. 数据库命令:迁移 + 填充

Laravel 的数据库迁移是版本控制神器,配合填充命令快速生成测试数据:

bash

运行

# 执行所有未运行的迁移文件
php artisan migrate

# 回滚最后一次迁移
php artisan migrate:rollback

# 重置所有迁移(清空所有表)
php artisan migrate:reset

# 重置+重新执行所有迁移(开发环境常用)
php artisan migrate:refresh

# 执行所有数据填充
php artisan db:seed
# 指定单个填充器执行
php artisan db:seed --class=UserSeeder

3. 缓存清理命令:解决开发缓存问题

开发中修改配置、路由、视图后不生效?大概率是缓存问题,一键清理:

bash

运行

# 清理应用缓存
php artisan cache:clear

# 清理配置缓存
php artisan config:clear

# 清理路由缓存
php artisan route:clear

# 清理视图编译缓存
php artisan view:clear

# 生产环境优化缓存(合并配置/路由,提升性能)
php artisan optimize

4. 路由 & 配置查看命令

bash

运行

# 查看项目所有路由(含请求方式、地址、控制器)
php artisan route:list

# 查看项目完整配置
php artisan config:show

三、进阶命令:项目上线 / 进阶开发必备

当项目需要处理异步任务、定时任务、事件监听时,这些进阶命令必不可少:

1. 队列命令(异步任务:发送邮件、导出文件等)

bash

运行

# 启动队列工作者(常驻进程)
php artisan queue:work

# 监听队列(开发环境调试用)
php artisan queue:listen

# 重启队列(修改代码后必须执行)
php artisan queue:restart

2. 计划任务(定时任务:自动清理、数据统计等)

bash

运行

# 手动执行一次计划任务
php artisan schedule:run

# 查看所有定义的定时任务
php artisan schedule:list

3. 其他进阶生成命令

bash

运行

# 创建事件类
php artisan make:event OrderPaid

# 创建事件监听器
php artisan make:listener SendOrderNotification

# 创建授权策略(权限控制)
php artisan make:policy UserPolicy

四、实战:自定义 Artisan 命令

Laravel 支持自定义命令,满足项目个性化需求(比如清理日志、批量导入数据、定时统计等),我们以「一键清理日志」为例实战演示:

步骤 1:生成自定义命令

bash

运行

php artisan make:command ClearLogsCommand

命令会自动创建文件:app/Console/Commands/ClearLogsCommand.php

步骤 2:编写命令逻辑

打开文件,修改命令签名描述执行逻辑

php

运行

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;

class ClearLogsCommand extends Command
{
    /**
     * 命令签名(执行时用:php artisan logs:clear)
     */
    protected $signature = 'logs:clear';

    /**
     * 命令描述(php artisan list 中展示)
     */
    protected $description = '一键清理 Laravel 日志文件';

    /**
     * 命令核心执行逻辑
     */
    public function handle()
    {
        // 获取日志目录路径
        $logDir = storage_path('logs');
        
        // 删除目录下所有日志文件
        File::cleanDirectory($logDir);

        // 输出成功提示
        $this->info('✅ Laravel 日志文件清理完成!');
    }
}

步骤 3:执行自定义命令

bash

运行

php artisan logs:clear

执行后,storage/logs 下的所有日志文件会被一键清空!

进阶:带参数 / 选项的命令

我们可以给命令加参数,比如「清理指定天数前的日志」:

php

运行

// 修改命令签名
protected $signature = 'logs:clear {--days=7 : 清理N天前的日志}';

// 在handle中获取参数
public function handle()
{
    $days = $this->option('days');
    $this->info("清理{$days}天前的日志完成!");
}

执行:php artisan logs:clear --days=3


五、Artisan 实用技巧

  1. 命令缩写:Laravel 支持命令缩写,比如 make:controllermake:co,开发更快捷;
  2. 指定环境执行php artisan migrate --env=testing(指定测试环境执行);
  3. 生产环境慎用migrate:refreshdb:seed 会清空数据库数据,严禁在生产环境随意执行;
  4. 命令调度:自定义命令可以加入计划任务,实现自动执行(比如每天凌晨清理日志)。

总结

Laravel Artisan 是提升开发效率的核心工具:

  • 新手掌握基础命令,就能完成 80% 的日常开发工作;
  • 进阶开发者用自定义命令,实现项目个性化自动化需求;
  • 配合队列、计划任务,轻松搞定异步、定时任务,让项目更健壮。

熟练使用 Artisan 命令,能让你的 Laravel 开发效率翻倍,彻底告别重复劳动!

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)