Laravel 是一个高效的全栈 Web 框架。将 Laravel 及其丰富的生态系统与 Livewire、React 或 Vue 配对,构建你的下一个伟大构想,并以你从未想象过的速度发布。
Laravel 是一个高效的全栈 Web 框架。将 Laravel 及其丰富的生态系统与 Livewire、React 或 Vue 配对,构建你的下一个伟大构想,并以你从未想象过的速度发布。
开箱即用,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、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 bootcamp。
有数十种方法可以构建应用程序的前端。值得庆幸的是,Laravel 为你提供了广泛的选择。无论你喜欢传统的 PHP 后端、使用 Laravel Livewire 的现代前端,还是对 React 和 Vue 百看不厌,Laravel 都允许你在极短的时间内交付高度精美和可维护的应用程序。
无论您喜欢 Livewire 还是 React,Laravel 的入门套件都可以让您快速上手。在几分钟内,您就可以拥有一个功能齐全的应用程序,该应用程序将 Laravel 和 Tailwind 与您选择的前端配对。
Laravel Breeze 是一个轻量级的入门套件,包括 Tailwind 样式的身份验证用户个人资料管理模板。
Laravel 最大的优势在于其充满热情的社区和生态系统。参加全球各地举行的会议,或者顺道拜访您当地的聚会。从我们的专用课程平台 Laracasts 学习,并享受大量的软件包和教程。