Laravel 内置了所有现代 Web 应用程序所需常见功能的优雅解决方案。现在是时候开始构建出色的应用程序,并停止浪费时间搜索软件包和重新发明轮子了。
用户身份验证就像在你的 Laravel 路由定义中添加一个身份验证中间件一样简单。
Route::get('/profile', ProfileController::class) ->middleware('auth');
用户经过身份验证后,可以通过 Auth
门面访问已认证的用户。
use Illuminate\Support\Facades\Auth; // Get the currently authenticated user...$user = Auth::user();
当然,你可以定义自己的身份验证中间件,从而自定义身份验证过程。
有关 Laravel 身份验证功能的更多信息,请查看 身份验证文档。
你通常需要检查已认证的用户是否有权执行特定操作。Laravel 的模型策略让这变得轻而易举。
php artisan make:policy UserPolicy
在生成的策略类中定义授权规则后,可以在控制器方法中授权用户的请求。
public function update(Request $request, Invoice $invoice){ Gate::authorize('update', $invoice); $invoice->update(/* ... */);}
害怕数据库?别担心。Laravel 的 Eloquent ORM 使与应用程序数据交互变得轻而易举,并且可以快速构建模型、迁移和关系。
php artisan make:model Invoice --migration
定义好模型结构和关系后,可以使用 Eloquent 功能强大的表达性语法与数据库进行交互。
// Create a related model...$user->invoices()->create(['amount' => 100]); // Update a model...$invoice->update(['amount' => 200]); // Retrieve models...$invoices = Invoice::unpaid()->where('amount', '>=', 100)->get(); // Rich API for model interactions...$invoices->each->pay();
迁移就像数据库的版本控制,允许你的团队定义和共享应用程序的数据库模式定义。
public function up(): void{ Schema::create('flights', function (Blueprint $table) { $table->uuid()->primary(); $table->foreignUuid('airline_id')->constrained(); $table->string('name'); $table->timestamps(); });}
Laravel 拥有超过 90 个强大的内置验证规则,并且可以使用 Laravel Precognition 在前端提供实时验证。
public function update(Request $request){ $validated = $request->validate([ 'email' => 'required|email|unique:users', 'password' => Password::required()->min(8)->uncompromised(), ]); $request->user()->update($validated);}
使用 Laravel 通过电子邮件、Slack、短信、应用内等方式快速向用户发送格式精美的通知。
php artisan make:notification InvoicePaid
生成通知后,可以轻松地将消息发送给应用程序中的某个用户。
$user->notify(new InvoicePaid($invoice));
Laravel 提供了一个强大的文件系统抽象层,为与本地文件系统和基于云的文件系统(如 Amazon S3)交互提供了一个统一的 API。
$path = $request->file('avatar')->store('s3');
无论文件存储在哪里,都可以使用 Laravel 简单、优雅的语法与它们进行交互。
$content = Storage::get('photo.jpg'); Storage::put('photo.jpg', $content);
Laravel 允许你将缓慢的作业卸载到后台队列,从而保持 Web 请求的快速响应。
$podcast = Podcast::create(/* ... */); ProcessPodcast::dispatch($podcast)->onQueue('podcasts');
可以运行任意数量的队列工作进程来处理工作负载。
php artisan queue:work redis --queue=podcasts
为了更清晰地了解和控制队列,Laravel Horizon 为你的 Laravel Redis 队列提供了一个漂亮的仪表盘和代码驱动的配置。
了解更多
使用表达性语法安排重复性作业和命令,告别复杂的配置文件。
$schedule->job(NotifySubscribers::class)->hourly();
Laravel 调度程序甚至可以处理多台服务器,并提供内置的重叠预防功能。
$schedule->job(NotifySubscribers::class) ->dailyAt('9:00') ->onOneServer() ->withoutOverlapping();
Laravel 构建于测试之上。从单元测试到浏览器测试,你都会对部署应用程序更有信心。
$user = User::factory()->create(); $this->browse(fn (Browser $browser) => $browser ->visit('/login') ->type('email', $user->email) ->type('password', 'password') ->press('Login') ->assertPathIs('/home') ->assertSee("Welcome {$user->name}"));
Laravel 的事件允许你在应用程序中发送和侦听事件,并且监听器可以轻松地调度到后台队列。
OrderShipped::dispatch($order);
class SendShipmentNotification implements ShouldQueue{ public function handle(OrderShipped $event): void { // ... }}
你的前端应用程序甚至可以使用 Laravel Echo 和 WebSockets 订阅 Laravel 事件,从而构建实时、动态的应用程序。
Echo.private(`orders.${orderId}`) .listen('OrderShipped', (e) => { console.log(e.order); });
我们只是触及了表面。Laravel 涵盖了构建 Web 应用程序所需的一切,包括电子邮件验证、速率限制和自定义控制台命令。查看 Laravel 文档 以继续学习。
我们庞大且经过精心维护的软件包库意味着你已准备好应对任何挑战。让 Laravel Octane 提升应用程序的性能,并在 Laravel Vapor(我们基于 AWS Lambda 的无服务器部署平台)上体验无限扩展。
“我使用 Laravel 已经近十年了,从未想过要切换到其他框架。”
Adam WathanTailwind CSS 的创建者
“Laravel 消除了构建现代、可扩展 Web 应用的痛苦。”
Aaron FrancisTorchlight 和 Sidecar 的创建者
“Laravel 发展成为一个令人惊叹的创新型且活跃的社区。Laravel 不仅仅是一个 PHP 框架。”
Bobby BouwmannEnrise 的精英开发者
“作为一名老派的 PHP 开发人员,我尝试过许多框架;但没有一个能像 Laravel 那样给我带来如此快的开发速度和使用乐趣。它是 PHP 生态系统中的一股清流,拥有一个优秀的社区。”
Erika HeidiMinicli 的创建者
“Laravel 简直太棒了。它让我能够以极快的速度和愉悦的心情构建任何我想构建的 Web 应用。”
“我偶然发现了 Laravel,但我立刻知道我找到了我的目标。框架、生态系统和社区 - 它是完美的组合。我参与了很棒的项目,结识了很棒的人;可以肯定地说,Laravel 改变了我的生活。”
Zuzana Kunckova全栈开发者
“Laravel 一流的测试工具让我能够安心快速地发布可靠的应用程序。”
Michael DyryndaLaravel Artisan + Laracon AU 组织者
“Laravel 就像火箭燃料一样,推动着我的职业生涯和业务发展。”
Chris Arter开发者,就职于 Bankrate
“我已经使用 Laravel 超过 10 年了,我无法想象在没有它的情况下使用 PHP。”
Eric L. Barnes创始人,Laravel News
“多年来,我一直享受着 Laravel 将开发者体验提升到新水平的专注。生态系统的所有部分都功能强大、设计精良、使用起来很有趣,并且拥有出色的文档。周围友好而乐于助人的社区也让人感到高兴。”
Freek Van der Herten所有者,Spatie
“Laravel 及其工具生态系统帮助我比其他任何工具更快、更安全、更高质量地构建客户端项目。”
Jason Beggs
“在我尝试了(许多)不同的生态系统之后,我才真正体会到 Laravel 一站式、全方位解决方案的优势。Laravel 独树一帜!”
Joseph Silber创建者,Bouncer
“Laravel 帮助我比任何其他解决方案更快地推出产品,随着社区的发展,我能够更快地进入市场。”
Steve McDougall
“在过去十年里,我一直在每个项目中使用 Laravel,而那个时代每天都会出现新的框架。直到今天,也没有任何框架能与之相比。”
Philo Hermans创始人,Anystack
“Laravel 适用于那些因为能够编写代码而编写代码的开发者,而不是因为必须编写代码而编写代码的开发者。”
Luke Downing创作者 + 开发者
“Laravel 使构建 Web 应用变得令人兴奋!它也帮助我成为了一名更好的开发者 🤙”
Tony Lea创始人,DevDojo
“Laravel 生态系统对我们业务的成功至关重要。该框架使我们能够快速行动并定期发布,而 Laravel Vapor 则使我们能够轻松地进行大规模运营。”
Jack Ellis联合创始人,Fathom Analytics