Laravel là gì? Cách cài đặt và sử dụng Laravel framework cơ bản


Đã bao giờ bạn nghe đến Laravel chưa? Nếu chưa thì đừng bỏ qua bài viết này. Hiểu thêm về Laravel, một trong những framework PHP phổ biến nhất sẽ có thể giúp ích cho bạn rất nhiều trong công việc xây dựng web app đấy.

Laravel là gì?

Laravel là một framework phát triển ứng dụng web được xây dựng trên ngôn ngữ lập trình PHP. Nó được thiết kế để giúp những nhà phát triển xây dựng các ứng dụng web hiện đại, linh hoạt và dễ bảo trì. Cho đến nay, Laravel đã trở thành một trong những framework PhP cung cấp cấu trúc code tổ chức tốt, tài liệu đầy đủ và nhiều tính năng mạnh mẽ nhất.

Cách cài đặt và sử dụng những framework cơ bản của Laravel

Authentication (Xác thực)

Việc xác thực người dùng cũng đơn giản như việc thêm phần mềm trung gian xác thực vào định nghĩa lộ trình Laravel của bạn:

Route::get('/profile', ProfileController::class)

->middleware('auth');

Khi người dùng được xác thực, bạn có thể truy cập người dùng được xác thực thông qua Auth:

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

$user = Auth::user();

Authorization (Ủy quyền)

Bạn thường cần kiểm tra xem người dùng đã xác thực có được phép thực hiện một hành động cụ thể hay không. Chính sách mô hình của Laravel khiến mọi việc trở nên dễ dàng:

php artisan make:policy UserPolicy

Khi bạn đã xác định quy tắc ủy quyền của mình trong lớp chính sách được tạo, bạn có thể ủy quyền yêu cầu của người dùng trong các phương thức điều khiển của mình:

public functionupdate(Request$request, Invoice$invoice)

{

Gate::authorize('update', $invoice);

$invoice->update(/* ... */);

}

Eloquent ORM

Laravel cung cấp một ORM (Object-Relational Mapping) được gọi là Eloquent, giúp tương tác với cơ sở dữ liệu thông qua các đối tượng và mô hình thay vì sử dụng ngôn ngữ SQL trực tiếp. Điều này giúp giảm bớt sự phức tạp của việc thao tác với cơ sở dữ liệu.

Eloquent ORM của Laravel giúp việc tương tác với dữ liệu ứng dụng của bạn trở nên dễ dàng hơn và các mô hình, quá trình di chuyển và các mối quan hệ có thể được nhanh chóng xây dựng:

php artisan make:model Invoice --migration

Khi bạn đã xác định cấu trúc mô hình và các relationships, bạn có thể chạy project Laravel bằng cú pháp mạnh mẽ của 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();

Database Migrations (Di chuyển cơ sở dữ liệu)

Di chuyển giống như kiểm soát phiên bản cho cơ sở dữ liệu của bạn, cho phép nhóm của bạn xác định và chia sẻ định nghĩa lược đồ cơ sở dữ liệu của ứng dụng:

public functionup(): void

{

Schema::create('flights', function (Blueprint $table) {

$table->uuid()->primary();

$table->foreignUuid('airline_id')->constrained();

$table->string('name');

$table->timestamps();

});

}

Validation (Thẩm định)

Laravel có hơn 90 quy tắc xác thực tích hợp, mạnh mẽ và sử dụng Laravel Precognition, có thể cung cấp xác thực trực tiếp trên giao diện người dùng của bạn:

public functionupdate(Request $request)

{

$validated = $request->validate([

'email' => 'required|email|unique:users',

'password' => Password::required()->min(8)->uncompromised(),

]);

$request->user()->update($validated);

}

Notifications & Mail (Thông báo và Mail)

Sử dụng Laravel để nhanh chóng gửi thông báo có kiểu dáng đẹp mắt cho người dùng của bạn qua email, Slack, SMS, trong ứng dụng, v.v.:

php artisan make:notification InvoicePaid

Sau khi tạo thông báo, bạn có thể dễ dàng gửi tin nhắn đến một trong những người dùng ứng dụng của mình:

$user->notify(newInvoicePaid($invoice));

File Storage (Lưu trữ file)

Laravel cung cấp lớp trừu tượng hóa hệ thống tệp mạnh mẽ, cung cấp một API thống nhất, duy nhất để tương tác với các hệ thống tệp cục bộ và hệ thống tệp dựa trên đám mây như Amazon S3:

$path = $request->file('avatar')->store('s3');

Bất kể tệp của bạn được lưu trữ ở đâu, hãy tương tác với chúng bằng cú pháp đơn giản, tinh tế của Laravel:

$content = Storage::get('photo.jpg');

Storage::put('photo.jpg', $content);

Job Queues (Hàng đợi công việc)

Laravel cho phép bạn chuyển các công việc chậm xuống hàng đợi nền, giữ cho các yêu cầu web của bạn luôn linh hoạt:

$podcast = Podcast::create(/* ... */);

ProcessPodcast::dispatch($podcast)->onQueue('podcasts');

Bạn có thể chạy bao nhiêu nhân viên xếp hàng tùy thích để xử lý khối lượng công việc của mình:

php artisan queue:work redis --queue=podcasts

Để có khả năng hiển thị và kiểm soát tốt hơn đối với hàng đợi của bạn, Laravel Horizon cung cấp một bảng điều khiển đẹp mắt và cấu hình dựa trên mã cho hàng đợi Redis do Laravel hỗ trợ.

Task Scheduling (Lên lịch cho công việc)

Lên lịch các công việc và lệnh định kỳ bằng cú pháp rõ ràng và nói lời tạm biệt với các tệp cấu hình phức tạp:

$schedule->job(NotifySubscribers::class)->hourly();

Bộ tạo lịch của Laravel thậm chí có thể xử lý nhiều máy chủ và cung cấp tính năng ngăn chặn chồng chéo tích hợp:

$schedule->job(NotifySubscribers::class)

->dailyAt('9:00')

->onOneServer()

->withoutOverlapping();

Testing

Laravel được xây dựng để thử nghiệm. Từ kiểm thử đơn vị đến kiểm thử trình duyệt, bạn sẽ cảm thấy tự tin hơn khi triển khai ứng dụng của mình:

$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}")

);

Event và WebSockets

Các sự kiện của Laravel cho phép bạn gửi và lắng nghe các sự kiện trên ứng dụng của mình và người nghe có thể dễ dàng được gửi đến hàng đợi nền:

OrderShipped::dispatch($order)

classSendShipmentNotificationimplementsShouldQueue

{

     public functionhandle(OrderShipped $event): void

     {

            // ...

     }

}

Frontend application của bạn thậm chí có thể đăng ký Laravel events bằng cách sử dụng Laravel Echo và WebSockets, cho phép bạn xây dựng các ứng dụng động, theo thời gian thực:

Echo.private(`orders.${orderId}`)

       .listen('OrderShipped', (e) => {

           console.log(e.order);

       });

> Xem thêm

Hy vọng bài viết trên đã giúp các bạn nắm được cơ bản về Laravel và các framework cơ bản của Laravel. Nếu thấy hay hãy chia sẻ ngay đến bạn bè và người thân nhé.