Laravel 项目开发常用扩展包

Laravel IDE Helper

barryvdh/laravel-ide-helper 扩展包可以通过执行命令生成 IDE Helper 文件,从而使用户的 IDE (PHPStorm, Sublme) 能够实现自动完成、代码跟踪和代码智能提示等功能,提高开发者的工作效率。

安装与使用

1). 使用 Composer 进行安装

1
composer require barryvdh/laravel-ide-helper --dev

2). 在文件 app/Providers/AppServiceProvider.php 中注册该扩展包

1
2
3
4
5
6
7
8
9
10
11
...
public function register()
{
// 生成环境不需要注册该服务
if ($this->app->environment() !== 'production') {
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}
}
...

3). 执行以下命令生成 IDE Helper 文件

1
php artisan ide-helper:generate

4). 也可以在文件 composer.json 进行配置,在安装或更新扩展包时自动生成 IDE Helper 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"php artisan ide-helper:generate",
"php artisan ide-helper:meta",
"@php artisan package:discover"
]
},
...

5). 也可以生成模型字段智能提示的代码注释,安装以下扩展包并执行命令生成代码注释

1
2
3
4
5
6
7
8
9
10
composer require doctrine/dbal --dev
// 生成 app\User.php 模型代码注释
php artisan ide-helper:models User
// 生成 app\Models\Foto.php 模型代码注释
php artisan ide-helper:models "App\Models\Foto"
// 生成目录 Models 下所有模型的代码注释
php artisan ide-helper:models --dir="Models"

Laravel Debugbar

barryvdh/laravel-debugbar 扩展包可以将 Laravel 项目的各项开发信息呈现给开发者,可以让开发者快速定位问题,提高 Debug 效率。

安装与使用

1). 使用 Composer 进行安装

1
composer require barryvdh/laravel-debugbar --dev

2). 确保文件 .envAPP_DEBUG 值为 true

3). 在文件 app/Providers/AppServiceProvider.php 中注册该扩展包

1
2
3
4
5
6
7
8
9
10
...
public function register()
{
if (env('APP_DEBUG')) {
$this->app->register(\Barryvdh\Debugbar\ServiceProvider::class);
}
}
...

4). 执行以下命令完成配置

1
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

5). 常用方法,需要在配置文件 config/app 的数组 aliases 添加 'Debugbar' => Barryvdh\Debugbar\Facade::class,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 抛出信息
Debugbar::info($object);
Debugbar::error('Error!');
Debugbar::warning('Watch out…');
Debugbar::addMessage('Another message', 'mylabel');
// 计算耗时
Debugbar::startMeasure('render','Time for rendering');
Debugbar::stopMeasure('render');
Debugbar::addMeasure('now', LARAVEL_START, microtime(true));
Debugbar::measure('My long operation', function() {
// Do something…
});
// 抛出异常
try {
throw new Exception('foobar');
} catch (Exception $e) {
Debugbar::addThrowable($e);
}
// 启用关闭 Debugbar
Debugbar::enable();
Debugbar::disable();

多语言

overtrue/laravel-lang 是基于 caouecs/Laravel-lang、包含 52 种语言的扩展包。

安装与使用

1). 使用 Composer 进行安装

1
composer require "overtrue/laravel-lang:~3.0"

2). 安装完毕之后,将文件 config/app.php 的代码进行替换:

1
2
3
4
5
// 原来代码
Illuminate\Translation\TranslationServiceProvider::class,
// 替换代码
Overtrue\LaravelLang\TranslationServiceProvider::class,

3). 然后修改文件 config/app.php 的配置项并执行命令

1
2
3
4
5
6
7
8
...
'locale' => 'zh-CN',
...
// 需要执行的命令
php artisan lang:publish zh-CN

4). 需要额外添加语言项,请在 resources/lang/zh-CN 下建立文件即可,例如新增文件 resources/lang/zh-CN/example.php,代码如下:

1
2
3
4
5
6
<?php
return [
'hello' => '你好',
'world' => ':hello世界',
];

然后在可以使用函数 trans() 返回自定义语言项:

1
2
echo trans('example.hello');
echo trans('example.world', ['hello' => '这个棒棒的']);

验证码

mews/captcha 是一个 Laravel 5 验证码扩展包。

安装与使用

1). 使用 Composer 进行安装

1
composer require mews/captcha

2). 在文件 config/app.php 加入代码如下:

1
2
3
4
5
6
7
8
'providers' => [
// ...
Mews\Captcha\CaptchaServiceProvider::class,
],
'aliases' => [
// ...
'Captcha' => Mews\Captcha\Facades\Captcha::class,
]

3). 然后执行命令如下:

1
php artisan vendor:publish

4). 常用方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 生成图片
captcha();
Captcha::create();
// 生成 URL
captcha_src();
Captcha::src();
// 生成 HTML
captcha_img();
Captcha::img();
// 使用不同配置
captcha_img('flat');
Captcha::img('inverse');

例子

以命令 php artisan make:auth 生成的代码为例,在文件 login.blade.php 添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div class="form-group {{ $errors->has('captcha') ? ' has-error' : '' }}">
<label for="captcha" class="col-md-4 control-label">验证码</label>
<div class="col-md-6">
<input id="captcha" class="form-control" name="captcha" >
<img class="thumbnail captcha" src="{{ captcha_src('flat') }}" onclick="this.src='/captcha/flat?'+Math.random()" title="点击图片重新获取验证码" style="margin-bottom: 0;margin-top: 10px;cursor: pointer;">
@if ($errors->has('captcha'))
<span class="help-block">
<strong>{{ $errors->first('captcha') }}</strong>
</span>
@endif
</div>
</div>

然后在验证用户登录的代码块添加表单验证规则和验证错误信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public function rules()
{
return [
...
'captcha' => 'required|captcha',
];
}
public function messages(){
return [
...
'captcha.required' => '验证码不能为空',
'captcha.captcha' => '请输入正确的验证码',
];
}

用户切换

viacreative/sudo-su 是一个允许开发人员切换为其他用户登录的扩展包,在测试用户权限时可以大大提高开发效率。

安装与使用

1). 使用 Composer 进行安装

1
composer require viacreative/sudo-su --dev

2). 在文件 app/Providers/AppServiceProvider.php 中注册扩展包的服务提供者

1
2
3
4
5
6
7
8
9
10
...
public function register()
{
if (config('app.debug')) {
$this->app->register(\VIACreative\SudoSu\ServiceProvider::class);
}
}
...

3). 然后在视图文件中添加代码如下:

1
2
3
@if (config('app.debug'))
@include('sudosu::user-selector')
@endif

4). 发布扩展包的相关资源到项目中

1
php artisan vendor:publish

5). 修改配置文件 config/sudosu.php

1
2
3
4
5
// 允许使用扩展包的项目环境
'allowed_tlds' => ['dev', 'local'],
// 用户对应的模型
'user_model' => App\Models\User::class