介绍
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_id
和
team_id
在我们上面的例子中)。 Laravel Idea 会自动为你建议相关的模型类,并且还会将关系方法添加到模型中。
该表单还为我们提供了使模型可软删除的功能,这将自动添加
deleted_at
字段到新的数据库表并注册
Illuminate\Database\Eloquent\SoftDeletes
模型本身的特征。
除了模型之外,我们还可以通过这种形式自动生成以下相关类:
- 数据库迁移以创建表
- 数据库工厂
- JSON 资源(用于 API)
- 控制器
- 表单请求
- 政策
根据屏幕截图中的表单,我们选择创建模型、迁移、策略和控制器。让我们看看这些生成的文件可能是什么样子,从模型开始:
命名空间
应用程序\模型
;使用
照亮\数据库\雄辩\模型
;使用
照亮\数据库\Eloquent\关系\属于
;班级
文章
延伸
模型{
受保护
功能
演员阵容
()
:
大批{
返回
[
'published_at'
=>
时间戳
,];}
民众
功能
用户
()
:
属于{
返回
$this
->
属于
(
用户
::班级
(英文):}
民众
功能
团队
()
:
属于{
返回
$this
->
属于
(
团队
::班级
(英文):}}
在上面的代码示例中,我们可以看到一个新的
App\Models\Article
模型已创建。由于我们添加了关系字段(
user_id
和
team_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 功能?






