├── data ├── service.md ├── assets.md ├── composer.md ├── lifecycle.md ├── localization.md ├── package.md ├── laravel_installer.md ├── service_container.md ├── dot_notation.md ├── route.md ├── dependency_injection.md ├── service_provider.md ├── pagination.md ├── route_parameter.md ├── publish.md ├── middleware.md ├── blade.md ├── queue.md └── migration.md └── README.md /data/service.md: -------------------------------------------------------------------------------- 1 | ## "Service" 2 | 3 | **"Service"**: dùng để chỉ các dịch vụ thực hiện một chức năng riêng mà không có mối liên quan nào trong framework, và chỉ thực hiện nhiệm vụ của nó. 4 | 5 | > **Chú ý**: tránh nhầm service với **service provider**. -------------------------------------------------------------------------------- /data/assets.md: -------------------------------------------------------------------------------- 1 | ## Assets 2 | 3 | **Assets**: hay còn gọi là **public assets**, là thuật ngữ để chỉ các file tài nguyên tĩnh trên được load trên trình duyệt như các file Javascript, CSS hay các file ảnh. Mặc định các file assets này nằm trong thư mục `public` của ứng dụng. -------------------------------------------------------------------------------- /data/composer.md: -------------------------------------------------------------------------------- 1 | ## Composer 2 | 3 | **Composer**: là một công cụ để quản lý các thư viện PHP được sử dụng trong project Laravel. Không chỉ dùng cho mỗi Laravel framework, Composer là một công cụ quản lý chung dành cho tất cả các project sử dụng ngôn ngữ lập trình PHP. 4 | 5 | Hãy tham khảo thêm về Composer [tại trang chủ](https://getcomposer.org/). -------------------------------------------------------------------------------- /data/lifecycle.md: -------------------------------------------------------------------------------- 1 | ## Lifecycle 2 | 3 | **Lifecycle**: dùng để chỉ vòng hoạt động của ứng dụng từ lúc khởi tạo, nhận các request xử lý và các bước quan trọng để xử lý các thao tác cần thiết để đưa ra kết quả cuối cùng. 4 | 5 | Bạn có thể tham khảo thêm về lifecycle của Laravel [tại đây](https://github.com/petehouston/laravel-docs-vn/blob/master/lifecycle.md). -------------------------------------------------------------------------------- /data/localization.md: -------------------------------------------------------------------------------- 1 | ## Localization 2 | 3 | **Localization**: là phương pháp chuyển đổi nội dung của trang web bằng Laravel sang các ngôn ngữ cụ thể, ví dụ như chuyển nội dung trang web sang tiếng Việt, tiếng Pháp, tiếng Hàn, tiếng Nhật ... 4 | 5 | Trong Laravel, việc cấu hình các nội dung sang các ngôn ngữ khác nhau được thiết lập trong thư mục `resources/lang`. -------------------------------------------------------------------------------- /data/package.md: -------------------------------------------------------------------------------- 1 | ## Package 2 | 3 | **Package**: dùng để chỉ những gói thư viện PHP được phát triển độc lập thành các module nhỏ, với mục đích là để tái sử dụng trong nhiều project khác nhau. Trong PHP, các package được sử dụng và quản lý chủ yếu thông qua [Composer](https://getcomposer.org/). 4 | 5 | Khi sử dụng để cài các package này vào project của bạn thì chúng sẽ nằm trong thư mục `vendor`. -------------------------------------------------------------------------------- /data/laravel_installer.md: -------------------------------------------------------------------------------- 1 | ## Laravel installer 2 | 3 | **Laravel installer**: là một công cụ dùng để tạo một project Laravel, thay vì sử dụng Composer `create-project`. 4 | 5 | Sử dụng Laravel installer sẽ tạo project Laravel nhanh hơn so với sử dụng Composer. 6 | 7 | Tham khảo cách cài đặt Laravel installer [tại đây](https://github.com/petehouston/laravel-docs-vn/blob/master/installation.md#sử-dụng-laravel-installer). -------------------------------------------------------------------------------- /data/service_container.md: -------------------------------------------------------------------------------- 1 | ## Service Container 2 | 3 | **Service Container**: là phương pháp mà Laravel sử dụng để quản lý các dependencies trong ứng dụng. Khi các dependencies được đăng kí vào trong container, thì bất cứ khi nào có một dependency injection được thực hiện thì container sẽ thực hiện xử lý để lấy ra đối tượng được yêu cầu. 4 | 5 | **Resolve**: chỉ việc container thực hiện query để lấy ra đối tượng liên kết đã được đăng kí vào trong container. -------------------------------------------------------------------------------- /data/dot_notation.md: -------------------------------------------------------------------------------- 1 | ## Dot Notation 2 | 3 | **Dot Notation**: là một phương pháp hay được sử dụng trong Laravel để truy cập vào các thành phần lồng ghép vào nhau, ví dụ, lấy một giá trị trong mảng, lấy một views trong một thư mục... Như tên gọi, dấu `.` được sử dụng để phân cách các level truy cập. 4 | 5 | Ví dụ sau đây minh hoạ cho việc lấy một view tại `resources/views/pages/common/contact.blade.php`, 6 | 7 | ``` 8 | return view('pages.common.contact'); 9 | ``` -------------------------------------------------------------------------------- /data/route.md: -------------------------------------------------------------------------------- 1 | ## Route 2 | 3 | **Route**: mỗi route tương ứng với một URL trên trình duyệt. Mỗi route sẽ đảm nhiệm việc quản lý URL nào và thực hiện điều phối xử lý như thế nào, có thể là qua một Closure, hoặc qua một Controller. 4 | 5 | Trong Laravel các route được khai báo trong file: `app/Http/routes.php`. 6 | 7 | Dưới đây là một ví dụ về route: 8 | 9 | ``` 10 | Route::get('/', function () { 11 | return "Welcome"; 12 | }); 13 | 14 | Route::get('/about', 'PagesController@about'); 15 | ``` -------------------------------------------------------------------------------- /data/dependency_injection.md: -------------------------------------------------------------------------------- 1 | ## "Dependency Injection" 2 | 3 | **Dependency Injection (viết tắt, DI)**: là một phương pháp xử lý sự phụ thuộc vào các đối tượng khác bằng cách thêm đối tượng vào trong hàm khởi tạo hoặc trong các hàm khác. 4 | 5 | Dưới đây là một ví dụ thương thấy về **DI** thực hiện trong controllers của Laravel: 6 | 7 | ``` 8 | class PagesController extends from Controller { 9 | 10 | public function home(HomeRepositoryInterface $homeRepo) { 11 | // ... 12 | } 13 | } 14 | ``` 15 | 16 | -------------------------------------------------------------------------------- /data/service_provider.md: -------------------------------------------------------------------------------- 1 | ## Service Provider 2 | 3 | **Service Provider**: được sử dụng để đăng kí các đối tượng được sử dụng trong Laravel, là trung tâm của việc khởi tạo trong toàn ứng dụng. Nhờ có Service Provider, mà chúng ta có thể lưu các đối tượng vào trong Laravel và lấy ra để sử dụng lúc cần thiết khi thực hiện "dependency injection". 4 | 5 | Các service provider đều kế thừa từ class `Illuminate\Support\ServiceProvider`. 6 | 7 | Tham khảo về Service Provider [tại đây](https://github.com/petehouston/laravel-docs-vn/blob/master/providers.md). -------------------------------------------------------------------------------- /data/pagination.md: -------------------------------------------------------------------------------- 1 | ## Pagination 2 | 3 | **Pagination**: hay còn gọi là "phân trang" là một kĩ thuật để phân tách một mảng kết quả thành các trang khác nhau. Ngoài ra, việc phân trang còn bao gồm sinh ra mã HTML và trỏ liên kết tới các trang tiếp theo. 4 | 5 | **Paginator**: ám chỉ đối tượng trong Laravel được dùng để xử lý việc phân trang. Thông thường, các Paginator kế thừa từ class `Illuminate\Pagination\Paginator` hoặc `Illuminate\Pagination\LengthAwarePaginator`. 6 | 7 | Mã HTML sinh ra từ Paginator trong Laravel tương thích với [Bootstrap CSS Framework](http://getbootstrap.com). -------------------------------------------------------------------------------- /data/route_parameter.md: -------------------------------------------------------------------------------- 1 | ## Route Parameter 2 | 3 | **Route pamareter**: là các tham số truyền trên URL, sẽ được chuyển đổi thành các tham số để thực hiện sử dụng trong controller. Các route parameter này được khai báo ở tham số thứ nhất trong khai báo route. 4 | 5 | Ví dụ: 6 | 7 | ``` 8 | Route::get('/articles/{id}', 'ArticlesController@show'); 9 | ``` 10 | 11 | Ở khai báo route trên thì `{id}` là một route parameter, và khi sử dụng trong controller thì sẽ sử dụng như một đối số vào trong hàm một cách bình thường. 12 | 13 | ``` 14 | public function show($id) { 15 | 16 | } 17 | ``` -------------------------------------------------------------------------------- /data/publish.md: -------------------------------------------------------------------------------- 1 | ## Publish 2 | 3 | **Publish**: là một thao tác của Laravel dùng để cung cấp tài nguyên được cung cấp từ các package bên ngoài vào trong ứng dụng để sử dụng. Ví dụ như file cấu hình của một package ngoài, muốn sử dụng được thì cần phải được đưa vào trong thư mục `config`, chính vì thế, lập trình viên Laravel cần phải thực hiện publish. 4 | 5 | Để publish resources từ trong package vào trong ứng dụng, bạn sẽ cần phải sử dụng câu lệnh `artisan vendor:publish`. 6 | 7 | Tham khảo mục [phát triển package cho Laravel](https://github.com/petehouston/laravel-docs-vn/blob/master/packages.md) để biết thêm chi tiết. -------------------------------------------------------------------------------- /data/middleware.md: -------------------------------------------------------------------------------- 1 | ## Middleware 2 | 3 | **Middleware**: là các thao tác cần thực hiện bổ sung cho các HTTP request tới chương trình, có thể coi như là bộ lọc các dữ liệu trước khi đến và sau khi thực hiện xong của HTTP request. Ví dụ như, trước khi user truy cập vào trang nội bộ, thì sẽ có thao tác kiểm tra user đã đăng nhập hay chưa, hoặc kiểm tra xem nếu user đã đăng nhập thì có đủ quyền hạn để thực hiện xoá bài viết hay không ... Như vậy, việc sử dụng middleware đem lại lợi ích để kiểm tra dữ liệu vào ra của request, để đảm bảo được luồng dữ liệu trước khi vào xử lý trong controller hay trước khi trả về response cho trình duyệt là an toàn hay hợp lệ. 4 | 5 | Tham khảo thêm về middleware [trong mục tài liệu](https://github.com/petehouston/laravel-docs-vn/blob/master/middleware.md). -------------------------------------------------------------------------------- /data/blade.md: -------------------------------------------------------------------------------- 1 | ## Blade 2 | 3 | **Blade**: là một bộ máy được sử dụng để tối ưu hoá việc tạo mẫu [template cho các view trong Laravel](https://github.com/petehouston/laravel-docs-vn/blob/master/blade.md). Các Blade view trong Laravel có đuôi file là `.blade.php` để nhận biết. Nội dung của một Blade view khá là cơ bản, đơn giản chỉ là 1 file mã HTML có sử dụng các từ khoá riêng của Blade. Trong Blade, các từ khoá sử dụng có kí hiệu `@` ở đầu. Ví dụ: 4 | 5 | ``` 6 | @if (isset($error)) 7 |

{{ $error->getErrors() }}

8 | @else 9 |

No error found.

10 | @endif 11 | ``` 12 | 13 | Ngoài việc Blade sử dụng để tối ưu hoá view, Blade còn là một cú pháp rất hữu dụng để làm các việc khác, ví dụ như tạo ra các task tự động hoá trong [Laravel Envoy](https://github.com/petehouston/laravel-docs-vn/blob/master/envoy.md). -------------------------------------------------------------------------------- /data/queue.md: -------------------------------------------------------------------------------- 1 | ## Queue 2 | 3 | **Queue**: là một phương pháp xử lý tác vụ theo nguyên tắc hàng đợi, thay vì phải xử lý trực tiếp trên trên request (điều này khiến các việc tiếp theo để xử lý request bị ngừng để chờ), thì đẩy việc xuống để làm ở background, để cho request có thể được tiếp tục xử lý. Điều này làm tối ưu hoá request và cải thiện performance cho ứng dụng web hơn. 4 | 5 | Ví dụ: khi người dùng thực hiện đăng kí một tài khoản, thông thường thì người dùng sẽ phải chờ hơi lâu vì lúc đăng kí thì ứng dụng cần tạo dữ liệu user mới vào database, thực hiện kết nối một server để gửi email chào mừng, thực hiện gửi email xác nhận địa chỉ tới địa chỉ mail đăng kí của user, ... còn nhiều xử lý khác nữa.... Nếu mà phải xử lý hết tất cả các công việc này rồi mới trả lại response cho user, thì sẽ không tốt chút nào. Việc áp dụng queue ở đây sẽ cho phép những công việc bổ sung, như là gửi email, có thể được thực hiện tách rời ra khỏi request đang xử lý, và có thể thực hiện lúc khác, để có thể trả về response sớm cho user. 6 | 7 | Laravel cung cấp hỗ trợ đẩy đủ các API cần thiết để làm việc với queue, hãy tham khảo [mục queue trong tài liệu của Laravel](https://github.com/petehouston/laravel-docs-vn/blob/master/queues.md). -------------------------------------------------------------------------------- /data/migration.md: -------------------------------------------------------------------------------- 1 | ## Migration 2 | 3 | **Migration**: là một phương pháp xây dựng và quản lý version cho việc xây dựng cấu trúc cho database. Trong một migration, lập trình viên sẽ cần thực hiện khai báo việc tạo cấu trúc như thế nào thông qua các hàm được cung cấp trên `Schema` và `Blueprint` objects. 4 | 5 | Việc sử dụng migration làm cho lập trình viên có thể dễ dàng tương tác với database hơn, thay vì phải nhớ và học các câu lệnh SQL để xây tạo các bảng, cột, index...lập trình viên có thể sử dụng OOP để tạo cấu trúc này một cách tiện lợi. Dưới đây là một ví dụ về migration, 6 | 7 | ```php 8 | 9 | Schema::create('users', function (Blueprint $table) { 10 | $table->increments('id'); 11 | $table->string('name'); 12 | $table->string('email')->unique(); 13 | $table->string('password'); 14 | $table->rememberToken(); 15 | $table->timestamps(); 16 | }); 17 | 18 | ``` 19 | 20 | Ở ví dụ trên, hàm `Schema::create` sẽ tạo một bảng là `users` với các trường như `PRIMARY KEY id INT AUTO INCREMENT`, `name VARCHAR(255)`, `email VARCHAR(255) UNIQUE` ... 21 | 22 | Tham khảo thêm về [Laravel migration tại đây](https://github.com/petehouston/laravel-docs-vn/blob/master/migrations.md). -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Thuật ngữ Laravel 2 | 3 | Laravel là một trong những framework phát triển và phổ biến nhất hiện nay. Và đi theo đó, là những thuật ngữ mới mà bạn có thể cảm thấy bỡ ngỡ hoặc không hiểu rõ. 4 | 5 | ## Danh sách thuật ngữ 6 | 7 | * [service](data/service.md) 8 | * [service container](data/service_container.md) 9 | * [service provider](data/service_provider.md) 10 | * [assets](data/assets.md) 11 | * [Blade](data/blade.md) 12 | * [Composer](data/composer.md) 13 | * [dependency injection](data/dependency_injection.md) 14 | * [dot notation](data/dot_notation.md) 15 | * [laravel installer](data/laravel_installer.md) 16 | * [lifecycle](data/lifecycle.md) 17 | * [localization](data/localization.md) 18 | * [middlware](data/middleware.md) 19 | * [migration](data/migration.md) 20 | * [package](data/package.md) 21 | * [pagination](data/pagination.md) 22 | * [publish](data/publish.md) 23 | * [queue](data/queue.md) 24 | * [route](data/route.md) 25 | * [route parameter](data/route_parameter.md) 26 | 27 | **Nếu có thuật ngữ nào trong Laravel mà bạn không hiểu và không có trong danh sách này, bạn có thể tạo [một issue mới](https://github.com/petehouston/thuat-ngu-laravel/issues) để yêu cầu giải nghĩa, hoặc bạn có thể đóng góp vào trong danh sách.** 28 | 29 | ## Đóng góp 30 | 31 | Đơn giản các bạn xem cấu trúc của repo, thực hiện fork và tạo một pull request. --------------------------------------------------------------------------------