Laravel 是一个具有富有表现力且优雅语法的 Web 应用程序框架。 我们已经奠定了基础 - 让您无需为小事烦恼即可进行创造。
开箱即用,Laravel 为所有现代 Web 应用程序所需的常见功能提供了优雅的解决方案。 现在是开始构建出色的应用程序的时候了,不要再浪费时间寻找包和重新发明轮子了。
身份验证用户就像将身份验证中间件添加到您的 Laravel 路由定义一样简单
Route::get('/profile', ProfileController::class) ->middleware('auth');
一旦用户通过身份验证,您可以通过 Auth
facade 访问经过身份验证的用户
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、SMS、应用内等方式快速向用户发送精美样式的通知
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 ArterBankrate 的开发者
“我已经使用 Laravel 超过 10 年了,我无法想象没有它我该如何使用 PHP。”
Eric L. BarnesLaravel News 的创始人
“多年来,我一直很享受 Laravel 将开发者体验提升到新水平的专注。生态系统的所有部分都功能强大、设计精良、使用起来很有趣,并且拥有出色的文档。周围友好且乐于助人的社区是令人愉快的一部分。”
Freek Van der HertenSpatie 的所有者
“Laravel 及其工具生态系统帮助我构建的客户项目比其他任何工具都更快、更安全、质量更高。”
Jason BeggsDesign to Tailwind 的所有者
“直到我尝试了(许多)不同的生态系统,我才完全意识到 Laravel 的一站式、包罗万象的解决方案有多好。Laravel 自成一格!”
Joseph SilberBouncer 的创建者
“Laravel 帮助我比任何其他解决方案更快地推出产品,随着社区的发展,我能够更快地进入市场。”
Steve McDougallLaravel Transporter 的创建者
“在每天都有新框架推出的时代,我过去十年里一直将 Laravel 用于每个项目。时至今日,仍然没有其他框架能与之匹敌。”
Philo HermansAnystack 的创始人
“Laravel 适合那些因为能写代码而写代码,而不是因为必须写代码的开发者。”
Luke Downing创造者 + 开发者
“Laravel 使构建 Web 应用程序令人兴奋!它还帮助我成为一名更好的开发者 🤙”
Tony LeaDevDojo 的创始人
“Laravel 生态系统是我们业务成功的基石。该框架使我们能够快速行动并定期发布,而 Laravel Vapor 使我们能够轻松地以惊人的规模运营。”
Jack EllisFathom Analytics 的联合创始人