Những điều gì mới trong Laravel 5
Bài đăng này đã không được cập nhật trong 9 năm
Tháng 9 năm ngoái, Laravel đã được chính thức cập nhật từ 4.3 lên phiên bản 5 với rất nhiều tính năng mới giúp các nhà phát triển làm việc hiệu quả hơn.
Cấu trúc thư mục Laravel 5
Sự thay đổi lớn đầu tiên là với cấu trúc thư mục. Các thư mục CONFIG, DATABASE, STORAGE và RESOURCES đã được tách khỏi thư mục APP ở phiên bản trước. Thư mục APP ở phiên bản 5 chỉ gồm:
- Commands
- Console
- Events
- Exceptions
- Handlers
- Http
- Providers
- Services
Nếu bạn đang quen với phiên bản trước thì bạn có thể sẽ thấy không quen lắm với sự thay đổi này, nhưng tin tôi đi, bạn sẽ thấy nó rõ ràng và dễ dàng làm việc hơn sau 2 ngày làm quen với Lavarel 5.
Thay đổi Blade
Blade đã không được cải tiến toàn bộ, nhưng nó có một điểm thay đổi rất đáng chú ý.
Trong Laravel 4, biến trong blade được viết trong 2 dấu ngoặc nhọn {{ $var }}
. Còn bây giờ chỉ cần dùng {!! $var !!}
Một trường hợp sử dụng phổ biến đó là với form giúp đỡ:
{!! Form::open() !!}
Contracts
Contracts là một tệp các giao diện, các giao diện này sẽ xác định các dịch vụ chính được cung cấp bởi framework. Về cơ bản, các service này giống như bộ tài liệu đặc tả các tính năng chính của Framework. Ngoài ra chúng còn có rất nhiều lợi ích khác, và bạn có thể xem thêm tại đây
Commands & Events
Commands và events đã có một sự cải thiện. Các tính năng được mô tả khá chi tiết và đầy đủ cả trong docs và từ các nguồn sau:
Facades and Helpers
Facedes vẫn có trong Laravel 5 nhưng một vài hàm helper mới đang được thay thế cho một số hàm phổ biến. Ví dụ: để render một view trong Laravel 4, bạn sẽ viết như sau:
View::make('path.to.view');
Nhưng bây giờ ta chỉ cần gọi một function đơn giản:
view('path.to.view');
Một số thay đổi khác:
- abort()
- action()
- app()
- app_path()
- asset()
- Routing – get(), delete(), put()
- back()
- redirect()
- response()
- và còn nhiều nữa ...
Routes
Routes nhận hai tính năng mới là: Route caching và middlewares.
Controller Method Injection
Laravel 4 hỗ trợ controller constructor injection
. Bây giờ điều này đã được thực hiện một bước xa hơn và bạn có thể type-hint ngay vào các method của mình như sau:
public function store(Request $request)
public function taxes(TaxCalculator $tax)
Để hiểu sâu hơn, bạn có thể tìm hiểu tại đây:
Authentication Scaffolding
Quy trình xác thực mặc định đã được cài đặt trước giúp việc bắt đầu trở nên dễ dàng hơn bao giờ hết.
Nó đưa ra 2 trait mới:
- AuthenticatesAndRegistersUsers
- ResetsPasswords
Điều tuyệt vời ở đây là bạn có thể include hoặc override bất kỳ phương thức trait nào để tùy biến cho app của mình.
Socialite
Laravel Socialite là một tùy chọn trong Laravel 5.0 giúp chúng ta làm việc dễ dàng hơn với OAuth. Hiện nay, Socialite hỗ trợ Facebook, Twitter, Google, và GitHub.
Bạn có thể tìm hiểu thêm thông tin tại đây
Flysystem
Tính năng mới tuyệt vời tiếp theo là Flysystem của Frank de Jonge. Nếu bạn không quen thuộc với package này thì có thể hiểu nó là một hệ thông tập tin trừu tượng cho phép bạn dễ dàng trao đổi trên một hệ thống tập tin local với một hệ thống tập tin từ xa. Các bộ adapter hiện nay là:
- Local
- Amazon Web Services – S3
- Rackspace Cloud Files
Nó có nghĩa là, bạn có thể dễ dàng đẩy file lên bất kỳ dịch vụ nào và sử dụng lưu trữ mở rộng dễ dàng hơn nhiều so với trước đây.
dotenv - Environmental Detection
Vance Lucas đã tạo ra một gói phần mềm PHP tên PHP dotenv, nó sẽ nạp các biến môi trường từ một .env để getenv (), $_ENV
và $_SERVER
một cách tự động.
Laravel 5 bao gồm gói phần mềm này để tạo nên môi trường quản lý đơn giản hơn nhiều. Không còn phải chỉnh sửa bootstrap/start.php
và tùy biến mảng $app-> detectEnvironment()
.
Thay vào đó bạn tạo tập tin .env riêng của bạn và có thể dễ dàng tùy chỉnh nó cho phù hợp với nhu cầu của bạn. Sau đó, trong bất kỳ tập tin cấu hình, bạn có thể sử dụng một cái gì đó như:
'database' => env('DB_DATABASE’, 'myproddb'),
Bạn cũng có thể tạo ra những tùy chỉnh cho các môi trường khác nhau để testing.
Form Requests
Xác thực form và các request đã được nói về rất nhiều và điều này là một trong những vẫn đề tôi chắc chắn rằng bạn đã nghe đề cập đến.
Về cơ bản, quyền và xác thực có thể được chuyển về FormRequests và được thêm vào một cách dễ dàng.
Tham khảo hai nguồn sau đây để biết thêm thông tin về tính năng này:
Laravel Elixir
Elixir là một khu vực để làm việc với các assets dễ dàng hơn. Thay vì phải xây dựng css và js của riêng bạn để xây dựng hệ thống, bạn có thể sử dụng Elixir và chạy dễ dàng.
Ngoài ra, nó còn xử lý tới 90% mọi thứ mà bạn cần như: sass, less, coffeescript, JavaScript, file phiên bản, và nhiều tính năng khác.
Laravel Scheduler
Laravel Scheduler được thiết kế để đơn giản hóa các task cần được chạy qua CRON. Tất cả những gì cần thiết là thiết lập một cron job bằng cách gọi artisan schedule:run
và đặt schedule theo phút.
Một khi cron của bạn thiết lập bạn có thể lập kế hoạch run bất cứ một task nào một cách ngắn gọn và thân thiện. Các schedule được tạo ra bên trong thư mục "app/Console/Commands"
Dưới đây là một task ví dụ:
$schedule->command('cache:clear')
->hourly()
->sendOutputTo($filePath)
->emailOutputTo('admin@framgia.com');
Có thể thấy việc các cron task được đánh phiên bản khiến ta dễ dàng xem nó được trong trình soạn thảo.
$schedule->call('SomeClass@method')->dailyAt('10:00');
New dd()
Hàm dd() (hay còn gọi dump and die) có một sự nâng cấp lớn. Symfony đã phát hành một VarDumper Component và Laravel sử dụng nó đặt dưới hood.
Các thành phần VarDumper cung cấp nhưng cơ chế cho phép đi qua bất kỳ biến PHP nào. Được đặt ở đầu trang, nó cung cấp một hàm dump() thay thế tốt hơn việc sử dụng var_dump
Eloquent Attribute Casting
Tính năng này đến với chúng ta nhờ Dayle Rees. Attribute Casting cho phép bạn chuyển đổi các thuộc tính sang một kiểu dữ liệu khác. Như một ví dụ trong mô hình của bạn, bạn thêm một casts property:
protected $casts = [
'is_admin' => 'boolean',
'options' => 'array',
];
Điều này sẽ tự động gán is_admin
tới một bool. Tùy chọn này sẽ được lưu trữ như json và tự động chuyển đổi thành một mảng khi được gọi ra.
Điều này là tuyệt vời khi bạn đang sử dụng JavaScript và cần phải kết hợp chúng.
Whoops no more
Laravel 4 đặc trưng một lỗi xử lý tên Whoops. Điều này đã được gỡ bỏ từ Laravel 5, nhưng nếu bạn muốn nó trở lại xem Bringing Whoops Back to Laravel 5
Packages and Workbench
Các hệ thống gói Laravel có một số thay đổi đáng kể. Đáng chú ý nhất là Workbench nay được gỡ bỏ và giờ phải sử dụng các gói Composer trực tiếp.
Bạn có thể tìm hiểu thêm về những thay đổi cụ thể trong các tài liệu chính thức và từ bài hướng dẫn bởi John in 't Hout, Loading package views / language files
Psysh
Tinker, công cụ CLI để làm việc xung quanh với mã của bạn, bây giờ là sử dụng Psysh bởi Justin Hileman. Đối với những người không quen thuộc Psysh là: Một runtime developer console, gỡ lỗi tương tác và REPL -Read-Eval-Print Loop- cho PHP
Psysh là siêu mạnh, đây là một số tính năng:
- Đọc tài liệu trong ngữ cảnh. doc dd
- Các lệnh list biết tất cả về mã của bạn và tất cả mọi người khác. Dễ dàng tìm kiếm và liệt kê tất cả các biến, hằng, lớp, giao diện, đặc điểm, chức năng, phương thức và thuộc tính.
- Dễ dàng hiển thị các mã nguồn cho bất kỳ đối tượng Userland, lớp, giao diện, đặc điểm, hằng số, phương thức hoặc thuộc tính.
- Bắt các ngoại lệ và cuối cùng là có sẵn thông qua một lệnh wtf.
- Hiển thị, tìm kiếm, lưu và phát lại lịch sử shell.
Tôi chắc chắn nó không nhiều và sẽ là một công cụ tuyệt vời cho bạn.
SuperClosure
SuperClosure, một thư viện cho kết thúc tuần tự và chức năng ẩn danh bởi Jeremy Lindblom, cũng là một tính năng mới. Đang được sử dụng bởi queued closures
New Generators
Artisan bây giờ thậm chí mạnh hơn và có thể tạo ra rất nhiều boilerplate cho bạn. Dưới đây là một danh sách của một số lệnh:
make:command
— Tạo một lớp lệnh mớimake:console
— Tạo một lệnh Artisan mớimake:controller
— Tạo một lớp điều khiển mớimake:event
— Tạo một lớp sự kiện mớimake:middleware
— Tạo một lớp trung gian mớimake:migration
— Tạo một tập tin migration mớimake:model
— Tạo một lớp Eloquent mớimake:provider
— Tạo một lớp cung cấp dịch vụ mớimake:request
— Tạo mộy lớp mẫu yêu cầu mớievent:generate
— Tạo ra các sự kiện và xử lý thiếu
Upgrading (Nâng cấp)
Nâng cấp sẽ không được cập nhật bằng một composer update
đơn giản. Vì đây là một phiên bản lớn, bạn nên dành một vài giờ để tìm hiểu tất cả mọi thứ được cập nhật. Các tài liệu chính thức và hướng dẫn nâng cấp của Matt có thể giúp bạn trong quá trình tìm hiểu này.
Chúng ta sẽ làm gì tiếp theo?
Như với bất kỳ một franework nào, nơi tốt nhất để tìm hiểu thêm là tài liệu chính thức. Sau đó đăng ký các bản tin Laravel sẽ giúp chúng ta có cập nhật mới nhất về các gói Laravel, và mọi thứ khác liên quan đến Laravel.
Tôi tin rằng năm 2015 sẽ là năm thú vị trong thế giới Laravel!
Bài viết được dịch từ nguồn: https://laravel-news.com/2015/01/laravel-5/
All rights reserved