tài liệu học laravel mới nhất 2023.Laravel Framework, tài liệu học laravel mới nhất 2023.Laravel Framework, tài liệu học laravel mới nhất 2023Laravel Framework, tài liệu học laravel mới nhất 2023,Laravel Framework, tài liệu học laravel mới nhất 2023.Laravel Framework, tài liệu học laravel mới nhất 2023Laravel Framework, tài liệu học laravel mới nhất 2023
CÀI ĐẶT LARAVEL FRAMEWORK Tổng quan Laravel Framework Laravel Framework PHP Framework hàng đầu nay, xây dựng nhằm hỗ trợ phát triển ứng dụng web Phiên Laravel Taylor Otwell tạo vào tháng năm 2011 giải pháp thay cho CodeIgniter Tính đến thời điểm tại, Laravel phiên 8.x Toàn kiến thức tài liệu chia sẻ phiên 8.x, phiên thấp học viên tham khảo tại: https://laravel.com/docs/ Chuẩn bị trước làm việc Laravel Để làm việc với Laravel Framework, máy tính học viên cần phải cài đặt Composer, Xampp (Hoặc phần mềm tạo server ảo khác) Yêu cầu tối thiểu server: - PHP >= 7.3 BCMath PHP Extension Ctype PHP Extension Fileinfo PHP Extension JSON PHP Extension Mbstring PHP Extension OpenSSL PHP Extension PDO PHP Extension Tokenizer PHP Extension XML PHP Extension Hướng dẫn cài đặt Laravel Framework Bởi Laravel sử dụng nhiều qua giao diện dòng lệnh (Command Line) bạn chuẩn bị cho cơng cụ Terminal để làm việc thường xuyên (Thay cmd Windows) - Sử dụng qua IDE: PHPStorm, Visual Code,… - Sử dụng qua phần mềm Terminal: Git bash, Window Terminal,… Cách 1: Cài đặt thông qua Composer - Bước 1: Di chuyển vào thư mục cần cài đặt webserver bạn (htdocs, www, public_html,…) - Bước 2: Chạy lệnh sau để cài đặt composer create-project laravel/laravel hoclaravel Trong hoclaravel thư mục chứa code laravel bạn Nếu bạn không muốn code laravel thư mục khác, di chuyển qua thư mục ngang hàng với htdocs sau chạy lệnh sau: composer create-project laravel/laravel htdocs Cách 2: Cài đặt thông qua Laravel Installer Để sử dụng cách này, bạn cần phải thiết lập đường dẫn tập tin thực thi Composer Enviroment Variables Path - Với Windows: %appdata%\Composer\vendor\bin - Với MacOS, Linux: ~/.composer/vendor/bin Sau thiết lập xong, bạn thực theo bước sau Bước 1: Mở Terminal lên gõ lệnh sau composer global require "laravel/installer" Bước 2: Di chuyển vào thư mục cần cài đặt Laravel chạy lệnh sau: laravel new hoclaravel Đợi khoảng thời gian, hệ thống tự động cài đặt Laravel cho bạn Chạy ứng dụng Laravel Để chạy ứng dụng Laravel bạn sử dụng cách sau: Cách 1: Sử dụng file htaccess (Thường áp dụng deploy lên server thật) Cách 2: Sử dụng Built-in web server PHP (Áp dụng trình phát triển localhost) Bạn di chuyển vào thư mục public ứng dụng Laravel bạn chạy lệnh sau: php -S localhost:8080 Nếu thành cơng, hình Console báo: Listening on http://localhost:8080 Cách 3: Sử dụng thông qua Laravel Artisan Bạn cần chạy câu lệnh sau: php artisan serve Sau hình Console hiển thị kết sau: Laravel development server started on http://localhost:8000 Truy cập địa chỉ: http://localhost:8080 xuất hình sau CẤU TRÚC THƯ MỤC - VÒNG ĐỜI REQUEST LARAVEL Nguyên tắc chung Với Laravel Framework, bạn không thiết phải tuân thủ cấu trúc thư mục mặc định Laravel Bạn hồn tồn tái cấu trúc lại thư mục, Class tuân thủ nguyên tắc autoload Composer Cấu trúc thư mục Laravel 8.x Thư mục app - Thư mục app chứa tất Class project Thư mục app/Console - Thư mục chứa tập tin định nghĩa câu lệnh artisan Thư mục app/Exceptions - Thư mục chứa tập tin quản lý, điều hướng lỗi Thư mục app/Http/Controllers - Thư mục chứa controller project Thư mục app/Http/Middleware - Thư mục chứa tập tin lọc ngăn chặn requests Thư mục app/Providers - Thư mục chứa file thực việc khai báo service bind vào Service Container Thư mục app/Models - Thư mục chứa model project (Với Laravel có sẵn thư mục Models) Thư mục bootstrap - Thư mục chứa file khởi động framework file cấu hình auto loading, route, file cache Thư mục config - Thư mục chứa tất file cấu hình Thư mục database - Thư mục chứa thư mục migration (tạo thao tác database) seeds (tạo liệu mẫu) Thư mục database/factories - Thư mục chứa file định nghĩa cột bảng liệu để tạo liệu mẫu Thư mục database/migrations - Thư mục chứa file tạo chỉnh sửa liệu Thư mục database/seeds - Thư mục chứa file tạo liệu thêm vào CSDL Thư mục public - Thư mục chứa file index.php giống cổng cho tất request vào project, bên thư mục chứa file JavaScript, CSS Thư mục resources - Thư mục chứa file view raw, file biên soạn LESS, SASS, JavaScript Ngoài chứa tất file language project Thư mục resources/views - Thư mục chứa file view xuất giao diện người dùng Thư mục routes - Thư mục chứa tất điều khiển route (đường dẫn) project Chứa file route sẵn có: web.php, channels.php, api.php, console.php Thư mục routes/api.php - Cấu hình route liên quan đến API Thư mục routes/web.php - Cấu hình route liên quan đến web (Có giao diện người dùng) Thư mục storage - Thư mục chứa file biên soạn blade templates bạn, file based sessions, file caches, file sinh từ project - Thư mục app, dùng để chứa file sinh từ project - Thư mục framework, chứa file sinh từ framework caches - Thư mục logs, chứa file logs - Thư mục /storage/app/public, lưu file người dùng tạo hình ảnh Thư mục tests - Thư mục chứa file tests Thư mục vendor - Thư mục chứa thư mục, file thư viện Composer File env - File chứa config Laravel File artisan - File thực lệnh Laravel File gitattributes, gitignore - File dùng để xử lý git File composer.json, composer.lock, composer-setup.php - File sinh composer File package.json - File chứa package cần dùng cho projects File phpunit.xml - File phpunit.xml, xml phpunit dùng để testing project File webpack.mix.js - File dùng để build webpack Vòng đời Request Laravel Vòng đời Request q trình có u cầu từ phía người dùng, Laravel tiếp nhận xử lý cuối Request trả kết Bước 01: Tiếp nhận Request khởi động (Bootstrap) Người dùng (Client) gửi Request tới file public/index.php, file chạy có Request từ phía người dùng Đăng ký chế autoload require DIR .'/ /vendor/autoload.php'; Hiểu cách đơn giản, Autoload thay lệnh require, include Chỉ cần file có tên Class trùng với tên file có namespace theo quy tắc, hệ thống tự động load file mà không cần phải sử dụng lệnh require include Import ứng dụng $app = require_once DIR .'/ /bootstrap/app.php'; Trong file bootstrap/app.php thực nhiệm vụ sau: - Tạo ứng dụng - Đăng ký interface cần thiết - Trả đối tượng ứng dụng ($app) Bước 02: Chạy ứng dụng $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send(); $kernel->terminate($request, $response); Bước file public/index.php Hệ thống nhận đối tượng $app trả từ bước 1, sau thực công việc: - Xử lý Request - Trả Response Bước 03: HTTP Kernel HTTP Kernel thực công việc trước Request thực thi (Tiền xử lý): - Xử lý lỗi Cấu hình log Xác định môi trường Xác thực bảo mật Bộ lọc trung gian mặc định (Middleware default) HTTP Session Và nhiều công việc khác Bước 04: Service providers Hiểu cách Service Providers trung tâm khởi tạo ứng dụng Laravel Service Providers khởi động nhiều thành phần khác core package cài thêm vào Bước 05: Router Sau hồn tất cơng việc bước 4, request gửi đến Router để định tuyến đến Controller tương ứng Ngay lúc xảy trường hợp: - Trường hợp 01: Router => Controller => Action - Trường hợp 02: Router => Middleware => Controller => Action Với trường hợp 2, Request phải chạy qua lọc trung gian (Middleware) trước vào Controller tương ứng Repository nơi lưu trữ logic truy vấn liệu Các lệnh truy liệu vốn viết trực tiếp controller đưa vào Repository Khi đó, Controller dùng Repository để tương tác với liệu thay sử dụng trực tiếp Việc truy cập liệu giấu kín Repository Thơng thường Laravel, phương thức find, create, update, delete, viết giống nhau, khác tên Model (đối tượng) cần tương tác Vì vậy, đoạn code nên đưa ra Repository để tiết kiệm việc viết code Lợi ích Repository: Code dễ đọc, dễ phát triển sản phẩm làm việc nhóm Giảm thay đổi code phần mềm có thay đổi cấu trúc liệu Tránh việc lặp code Hạn chế lỗi truy vấn Dễ dàng thực test Triển khai Repository cho Laravel Chuẩn bị cấu trúc thư mục Trong thư mục app ứng dụng Laravel bạn, tạo thư mục có tên là Repositories Trong thư mục có: RepositoryInterface: interface khuôn mẫu, khai báo phương thức chung cho Models BaseRepository: implements RepositoryInterface, triển khai phương thức chung cho Model Các thư mục riêng tương ứng với Model (Ở ví dụ Product) Trong thư mục chứa: ProductRepositoryInterface: interface chứa phương thức riêng Model Product ProductRepository: implements ProductRepositoryInterface Trong ProductController, thay viết trực tiếp truy vẫn, khởi tạo controller có thuộc tính $productRepo để truy vấn liệu qua Repository Design Pattern 2 Đăng ký AppServiceProvider Khi khởi tạo controller, gán thuộc tính $productRepo có kiểu là ProductRepositoryInterface Mục đích để logic làm việc với liệu thay đổi hay để dễ hiểu, bạn nghĩ đến database thay đổi (ví dụ chuyển từ MySQL sang Redis), lệnh truy vấn liệu thay đổi Khi đó, ta phải tạo thêm class ProductRepository khác (ví dụ RedisProductRepository ) Để dễ dàng cho thay đổi vậy, không cần sửa lại controller dùng repository cũ, ta đăng kí sau cần thay đổi repository file app/Providers/AppServiceProvider.php public function register() { $this->app->singleton( \App\Repositories\Product\ProductRepositoryInterface::class, \App\Repositories\Product\ProductRepository::class ); } Tạo RepositoryInterface BaseRepository RepositoryInterface