首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

使用 Laravel Idea 增强 PhpStorm

发布日期 经过

使用 Laravel 为 PhpStorm 超强功能(图片)

介绍

PhpStorm JetBrains 的集成开发环境 (IDE) 是一款出色的 PHP 开发人员工具。它包含大量功能(例如重构和测试工具),可帮助您快速高效地编写代码。

它还支持安装插件,以便您可以扩展其功能并根据您的特定需求定制 IDE。对于 Laravel 开发人员来说,最受欢迎的插件之一(也是我个人最喜欢的插件之一)是 Laravel 理念

在本文中,我们将了解 Laravel Idea 是什么以及它提供的我最喜欢的功能。

什么是 Laravel Idea?

Laravel Idea 是 PhpStorm 的一个插件,它为 Laravel 开发人员添加了一些非常方便的功能。

我已经用了好几年了,非常喜欢它。事实上,每当我买一台新笔记本电脑时,它都是我最先安装的东西之一,所以我强烈推荐它。

我喜欢它的一个原因是它与 PhpStorm 无缝集成。感觉它就像是 PhpStorm 本身的一部分,而不是一个单独的插件,所以它非常适合我的工作流程。它融合得如此之好,以至于我经常忘记我正在使用的某个特定功能是 PhpStorm 的原生功能还是 Laravel Idea 的一部分。

Laravel Idea 价格是多少?

在撰写本文时,Laravel Idea 提供了两个单独的计划:“个人”和“组织”。

如果您选择按月付款,个人计划第一年每月费用为 4.90 美元,第二年每月费用为 3.90 美元,第三年及以后每月费用为 2.90 美元。但是,如果您选择按年付款,这些价格会更低。

如果您还不确定是否要使用该插件,还可以免费试用 30 天。老实说,我敢打赌,您会非常喜欢它,试用期结束后您还会继续使用它!使用过它提供的功能后,您会觉得没有它您就失去了一条腿(至少我是这么觉得的)。

由于它是一种相对于其所提供的生产力而言相对便宜的工具,因此它也可能会很容易地被你的老板(或任何掌握财政大权的人)接受。

如何安装 Laravel Idea

开始使用 Laravel Idea 非常简单。

您可以直接从 PhpStorm 安装它。您只需要:

  • 打开 PhpStorm
  • 进入“设置”菜单
  • 点击“插件”
  • 搜索“Laravel Idea”
  • 点击“安装”

就这样!现在应该已经安装完毕并可以开始使用了。

要检查是否已安装,您可以查看顶部菜单栏中应有的新“Laravel”菜单项。从此菜单,您可以访问所有 Laravel Idea 功能。

Laravel Idea 的主要功能

Laravel Idea 提供了大量功能,但以下是我最喜欢的一些功能:

改进 PhpStorm 的自动完成功能

到目前为止,Laravel Idea 我最喜欢的功能之一是它为 PhpStorm 提供的改进的自动完成功能。别误会我的意思,PhpStorm 中的自动完成功能已经非常好了,但 Laravel Idea 将其提升到了一个新的水平。

如果你是 Laravel 开发者,你一定知道 Laravel 充满了魔力。例如,有 Eloquent 模型访问器, 立面 、宏、事件和作业调度调用等等。尽管 PhpStorm 已经尽力理解一些更明显的 Laravel 功能,但它往往会错过这些类型的魔法。

在 PhpStorm 中,您可以导航到新的“Laravel”菜单项,然后按“生成辅助代码”。在后台,Laravel Idea 将通过扫描您的 Laravel 应用程序生成辅助代码,包括读取迁移文件和数据库架构。从这里开始,它就可以为 PhpStorm 提供更好的自动完成建议。这是我定期运行的操作(通常在更新依赖项之后,或在创建新迁移之后),以使 PhpStorm 与我的 Laravel 应用程序保持同步。

除此之外,Laravel Idea 还可以为 PhpStorm 提供配置和翻译键的自动完成建议, 路线名称 、视图名称、表单请求字段等等。

例如,假设您有以下表单请求:

命名空间 应用程序\Http\请求 ;
使用 照亮\Foundation\Http\FormRequest ;
班级 StoreUserRequest 延伸 表单请求
{
// ...
民众 功能 规则 () : 大批
{
返回 [
'电子邮件' => [ '细绳' , '必需的' , '电子邮件' ],
'姓名' => [ '细绳' , '必需的' ],
];
}
}

然后假设您想在控制器中使用此表单请求,如下所示:

命名空间 App\Http\Controllers ;
使用 App\Http\Requests\StoreUserRequest ;
使用 应用程序\模型\用户 ;
班级 用户控制器
{
民众 功能 店铺 StoreUserRequest $请求)
{
$电子邮件 = $请求 -> 已验证 '电子邮件' (英文):
// ...
}
}

使用如下代码时 $request->validated()$request->safe() ,Laravel Idea 将为表单请求中可用的字段提供自动完成建议。例如,输入 $request->validated('e') 会建议 $request->validated('email') 为您提供。这是一个非常方便的功能,可以为您节省大量时间并减少输入错误的几率。以下是此示例:

代码生成

Laravel Idea 提供的另一个非常方便的功能是能够轻松生成类和文件。

您可以导航到“Laravel”菜单项,然后单击“代码生成”,也可以使用键盘快捷键( Cmd + Shift + , )打开代码生成对话框。从这里,您可以开始输入要生成的内容。例如,您可以输入“cont”,插件将建议“创建控制器”和“创建资源控制器”。您可以选择其中一个并按 Enter 生成代码。它将自动创建并打开文件,无需您离开键盘。

代码生成对话框如下所示:

在撰写本文时,有 34 种不同文件的选项,包括:

  • 控制器
  • 表单请求
  • 雄辩的模型演员表
  • 服务提供商
  • 等等。

在生成每个文件时,Laravel Idea 都会为您提供适用于您正在创建的文件的附加选项。例如,在生成数据库迁移时,您将获得以下选项:

  • 迁移文件名
  • 迁移是否应创建表或更改表
  • 表名称
  • 迁移是否应匿名
  • 是否从迁移中省略“down”方法

提交表单后,它将自动为您生成数据库迁移文件。数据库迁移表单如下所示:

如果我们提交此表单,Laravel Idea 将生成一个新的迁移文件(在 database/migrations 目录)看起来像这样:

使用 照亮\数据库\迁移\迁移 ;
使用 照亮\数据库\架构\蓝图 ;
使用 照亮\支持\立面\模式 ;
返回 新的 班级 延伸 迁移 {
民众 功能 向上 () : 空白
{
架构 :: 创造 ‘文章’ , 功能 蓝图 $table) {
$表 -> ID ();
$表 -> 时间戳 ();
});
}
民众 功能 向下 () : 空白
{
架构 :: dropIfExists ‘文章’ (英文):
}
};

生成 Eloquent 模型

我喜欢的一种特定类型的类生成(并且觉得需要在本文中单独介绍一下,因为我太喜欢它了!),就是能够生成 Eloquent 模型

Laravel Idea 为您提供了一个几乎增强您创建模型能力的表单。它不仅允许您轻松创建模型类本身,还可以同时自动创建其他几个相关文件并预填充其中一些。

您可以通过导航到“Laravel”菜单项然后单击“New Eloquent Model”来打开生成器。

表单示例如下:

正如我们在图片中看到的,它让你能够定义模型名称、表名称以及你需要的所有字段。添加字段时,你可以选择它们的数据类型(例如字符串、布尔值、整数等),还可以指定它们是否可空。你还可以定义关系字段(例如 user_idteam_id 在我们上面的例子中)。 Laravel Idea 会自动为你建议相关的模型类,并且还会将关系方法添加到模型中。

该表单还为我们提供了使模型可软删除的功能,这将自动添加 deleted_at 字段到新的数据库表并注册 Illuminate\Database\Eloquent\SoftDeletes 模型本身的特征。

除了模型之外,我们还可以通过这种形式自动生成以下相关类:

  • 数据库迁移以创建表
  • 数据库工厂
  • JSON 资源(用于 API)
  • 控制器
  • 表单请求
  • 政策

根据屏幕截图中的表单,我们选择创建模型、迁移、策略和控制器。让我们看看这些生成的文件可能是什么样子,从模型开始:

命名空间 应用程序\模型 ;
使用 照亮\数据库\雄辩\模型 ;
使用 照亮\数据库\Eloquent\关系\属于 ;
班级 文章 延伸 模型
{
受保护 功能 演员阵容 () : 大批
{
返回 [
'published_at' => 时间戳 ,
];
}
民众 功能 用户 () : 属于
{
返回 $this -> 属于 用户 ::班级 (英文):
}
民众 功能 团队 () : 属于
{
返回 $this -> 属于 团队 ::班级 (英文):
}
}

在上面的代码示例中,我们可以看到一个新的 App\Models\Article 模型已创建。由于我们添加了关系字段( user_idteam_id ),Laravel Idea 已自动创建 user()team() 方法。它还添加了 published_at 场地。

接下来我们看一下生成的迁移文件:

使用 照亮\数据库\迁移\迁移 ;
使用 照亮\数据库\架构\蓝图 ;
使用 照亮\支持\立面\模式 ;
返回 新的 班级 延伸 迁移 {
民众 功能 向上 () : 空白
{
架构 :: 创造 ‘文章’ , 功能 蓝图 $table) {
$表 -> ID ();
$表 -> 细绳 'uuid' (英文):
$表 -> 外国身份证 '用户身份' (英文):
$表 -> 外国身份证 'team_id' (英文):
$表 -> 细绳 '标题' (英文):
$表 -> 文本 '内容' (英文):
$表 -> 时间戳 'published_at' (英文):
$表 -> 时间戳 ();
});
}
民众 功能 向下 () : 空白
{
架构 :: dropIfExists ‘文章’ (英文):
}
};

我们可以看到,迁移文件已创建,其中包含我们在表单中指定的所有字段。您可能想要对此文件进行一些更改,例如添加索引或级联删除。但如果没有,您可以直接运行迁移。

接下来我们看一下生成的策略文件:

命名空间 应用策略 ;
使用 应用程序\模型\文章 ;
使用 应用程序\模型\用户 ;
使用 照亮\Auth\Access\HandlesAuthorization ;
班级 文章政策
{
使用 处理授权 ;
民众 功能 查看任意 用户 $用户) : 布尔值
{
}
民众 功能 看法 用户 $user, 文章 $article) : 布尔值
{
}
民众 功能 创造 用户 $用户) : 布尔值
{
}
民众 功能 更新 用户 $user, 文章 $article) : 布尔值
{
}
民众 功能 删除 用户 $user, 文章 $article) : 布尔值
{
}
民众 功能 恢复 用户 $user, 文章 $article) : 布尔值
{
}
民众 功能 强制删除 用户 $user, 文章 $article) : 布尔值
{
}
}

我们可以看到,该策略具有控制访问所需的所有方法 App\Models\Article 模型。然后,您可以根据需要为每种方法填写逻辑。

最后我们来看一下生成的控制器文件:

命名空间 App\Http\Controllers ;
使用 应用程序\模型\文章 ;
使用 照亮\基础\身份验证\访问\授权请求 ;
使用 照亮\Http\请求 ;
班级 文章控制器 延伸 控制器
{
使用 授权请求 ;
民众 功能 指数 ()
{
$this -> 授权 'viewAny' , 文章 ::班级 (英文):
返回 文章 :: 全部 ();
}
民众 功能 店铺 要求 $请求)
{
$this -> 授权 '创造' , 文章 ::班级 (英文):
$数据 = $请求 -> 证实 ([
'uuid' => [ '必需的' ],
'用户身份' => [ '必需的' , 'exists:users' ],
'team_id' => [ '必需的' , 'exists:teams' ],
'标题' => [ '必需的' ],
'内容' => [ '必需的' ],
'published_at' => [ '必需的' , '日期' ],
]);
返回 文章 :: 创造 (数据)
}
民众 功能 展示 文章 $article)
{
$this -> 授权 '看法' ,$article);
返回 文章;
}
民众 功能 更新 要求 请求, 文章 $article)
{
$this -> 授权 '更新' ,$article);
$数据 = $请求 -> 证实 ([
'uuid' => [ '必需的' ],
'用户身份' => [ '必需的' , 'exists:users' ],
'team_id' => [ '必需的' , 'exists:teams' ],
'标题' => [ '必需的' ],
'内容' => [ '必需的' ],
'published_at' => [ '必需的' , '日期' ],
]);
$文章 -> 更新 (数据)
返回 文章;
}
民众 功能 破坏 文章 $article)
{
$this -> 授权 '删除' ,$article);
$文章 -> 删除 ();
返回 回复 () -> json ();
}
}

API 控制器具有与以下对象交互所需的所有方法: App\Models\Article 模型,每个方法都有一些基本的授权和验证检查。您可能希望向这些方法添加更多逻辑,但这是一个很好的起点,可以让您免于自己编写所有样板代码。

导航

Laravel Idea 中另一个非常方便的功能是它大大改善了 PhpStorm 中的导航。

大多数 IDE 的标准功能是能够“点击/进入”类名或方法/函数名并转到该类、方法或函数。您可以想象,当您浏览项目并想要查看特定方法的工作原理时,此功能非常有用。

然而,Laravel Idea 更进一步。它为您提供了点击更多内容的能力,而不仅仅是标准类和方法。您还可以点击:

  • 配置和翻译键 - 例如:点击 config('app.name') 会直接带你到 name 字段中的 config/app.php 文件。
  • Eloquent 作用域和关联方法 - 例如:点击 posts 部分 User::whereHas('posts') 会带你去 posts 关系定义为 User 模型。
  • 航线 - 例如:点击 route('dashboard') 会带你到路线定义(大概在 routes/web.php 文件)。
  • 控制台命令 - 例如:点击 Artisan::call('migrate') 会带你去 migrate 命令定义在 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php
  • 还有更多

一般的经验规则是,如果 Laravel Idea 可以在您输入时为您自动完成字符串,它就知道该字符串来自哪里并且可以直接带您到该字符串。

能够像这样在代码中跳转比手动搜索所需文件或类要高效得多。这真的可以节省时间!

集成和软件包支持

我最近发现的一个非常酷的功能是 Laravel Idea 与其他软件包和库(例如 Livewire、Inertia、Laravel Nova 和 Filament)的良好集成。

例如,如果您正在创建 Livewire 或 Inertia 组件,Laravel Idea 可以为您提供自动完成建议,并允许您快速跳转代码库。

如果您使用的是 Laravel Nova 或 Filament 之类的东西,您还可以快速生成 Nova 和 Filament 资源类,甚至可以从现有的 Eloquent 模型中生成。您可以选择直接从模型生成这些类,方法是右键单击模型名称(如下图所示),或者通过我们之前讨论过的“创建 Eloquent 模型”模式中出现的新复选框。

结论

在本文中,我们介绍了我最喜欢的一些 Laravel Idea 功能。如您所见,它是 PhpStorm 的一个很好的补充,可以使 IDE 比现在更加强大。

如果你是 Laravel 开发人员,我强烈建议你尝试一下,尤其是因为它有免费试用版。这是一款很棒的工具,可以为你节省大量时间,让你的开发过程更加顺畅。

我是否遗漏了您最喜欢的 Laravel Idea 功能?

阿什利·艾伦照片

我是一名自由职业的 Laravel Web 开发人员,喜欢为开源项目做贡献,构建令人兴奋的系统,并帮助其他人学习 Web 开发。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

访问 Laravel Cloud
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
几天内即可获得 Laravel 代码审查徽标的专家指导

几天内即可获得 Laravel 代码审查方面的专家指导

专家级代码审查!两位拥有 10 年以上 Laravel 开发经验的开发者将为您提供清晰、实用的反馈,帮助团队构建更优质的应用程序。

几天内即可获得 Laravel 代码审查方面的专家指导
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
MongoDB 徽标

MongoDB

Enhance your PHP applications with the powerful integration of MongoDB and Laravel, empowering developers to build applications with ease and efficiency. Support transactional, search, analytics and mobile use cases while using the familiar Eloquent APIs. Discover how MongoDB's flexible, modern database can transform your Laravel applications.

MongoDB
Ship AI with Laravel: Stop Your AI Agent from Guessing image

Ship AI with Laravel: Stop Your AI Agent from Guessing

阅读文章
Laravel Cloud Adds Path Blocking to Prevent Bots From Waking Hibernated Apps image

Laravel Cloud Adds Path Blocking to Prevent Bots From Waking Hibernated Apps

阅读文章
Making Laravel MongoDB Operations Idempotent: Safe Retries for Financial Transactions image

Making Laravel MongoDB Operations Idempotent: Safe Retries for Financial Transactions

阅读文章
FormRequest Strict Mode and Queue Job Inspection in Laravel 13.4.0 image

FormRequest Strict Mode and Queue Job Inspection in Laravel 13.4.0

阅读文章
Pretty PHP Info: A Modern Replacement for `phpinfo()` image

Pretty PHP Info: A Modern Replacement for `phpinfo()`

阅读文章
Laracon US 2026 Announced image

Laracon US 2026 Announced

阅读文章