Trong những ngày đầu của web động, việc viết một ứng dụng web khác rất nhiều so với ngày nay. Các nhà phát triển sau đó chịu trách nhiệm viết mã cho không chỉ logic duy nhất của các ứng dụng đó, mà còn viết lại từng thành phần rất phổ biến trên các trang web khác – xác thực người dùng, xác thực đầu vào, truy cập cơ sở dữ liệu, tạo khuôn mẫu,…
Ngày nay, các lập trình viên có rất nhiều framework và hàng ngàn thành phần và thư viện có thể truy cập dễ dàng. Nhưng khi bạn học một framework mới, thì 3 framework mới hơn (và có ý nghĩa tốt hơn) đã xuất hiện với ý định thay thế nó.
Có nhiều lý do để chọn sử dụng một framework nào đó. Vậy tại sao phải sử dụng framework? Cụ thể hơn, tại sao nên sử dụng Laravel?
Tại sao nên sử dụng Framework?
Thật dễ hiểu vì sao lại có lợi khi sử dụng các thành phần hoặc packages riêng lẻ có sẵn cho các nhà phát triển PHP.
Với các packages, người khác chịu trách nhiệm phát triển và duy trì một đoạn mã bị cô lập, có công việc được xác định rõ và theo lý thuyết thì người đó hiểu sâu hơn về thành phần này hơn bạn.
Các framework như Laravel – và Symfony, Silex, Lumen và Slim – đóng gói một bộ sưu tập các packages của bên thứ ba cùng với framework “tùy chỉnh” như các tệp cấu hình, service providers, cấu trúc thư mục được quy định… Vì vậy, lợi ích của việc sử dụng một framework nói chung là “ai đó” đã đưa ra quyết định không chỉ về các packages riêng lẻ cho bạn, mà còn về cách các packages đó phù hợp với nhau.
“Tôi có thể xây dựng nó”
Hãy nói rằng bạn bắt đầu một ứng dụng web mới mà không dùng framework. Bạn bắt đầu từ đâu? Chà, có lẽ nên định tuyến các yêu cầu HTTP, vì vậy bây giờ bạn cần đánh giá tất cả các thư viện phản hồi yêu cầu HTTP có sẵn và chọn một. Ồ, và bạn có thể cần phải thiết lập một số dạng tệp cấu hình v.v.. Nó nên sử dụng cú pháp nào? Nó nên đi đâu? Còn bộ điều khiển thì sao? Nó nằm ở đâu, và nó được tải lên như thế nào? Và rất nhiều thiết lập khác.
Hơn nữa, điều gì sẽ xảy ra nếu bạn dành thời gian để trả lời tất cả những câu hỏi đó và tạo thành công ứng dụng của bạn – điều gì tác động đến nhà phát triển tiếp theo? Thế còn khi bạn có 4 ứng dụng tùy chỉnh như vậy, hoặc nhiều hơn, và bạn phải nhớ nơi các bộ điều khiển nằm trong đó, hoặc cú pháp định tuyến là gì?
Như vậy việc tự xây dựng từ đầu vô cùng khó khăn và phức tạp, giải quyết quá nhiều vấn đề liên quan.
Tính nhất quán và linh hoạt
Các framework giải quyết vấn đề này bằng cách cung cấp một câu trả lời được xem xét cẩn thận cho từng câu hỏi. Chúng ta nên sử dụng thành phần nào ở đây? và đảm bảo rằng các thành phần cụ thể được chọn làm việc tốt với nhau. Ngoài ra, các framework cung cấp các quy ước làm giảm số lượng mã nguồn mà nhà phát triển mới cho dự án phải hiểu – ví dụ, nếu bạn hiểu cách định tuyến hoạt động trong một dự án Laravel, bạn hiểu cách nó hoạt động trong tất cả các dự án khác được xây dựng trên Laravel.
Các framework không chỉ cung cấp cho bạn một nền tảng vững chắc mà còn cho bạn tự do tùy chỉnh nội dung. Và điều này, Laravel làm rất tốt, đó là một trong các lý do làm cho Laravel trở nên đặc biệt.
Lịch sử ngắn về các Framework Web và PHP
Một phần quan trọng để có thể trả lời câu hỏi “Tại sao lại sử dụng Laravel?” là hiểu về lịch sử của Laravel – và hiểu những gì xảy ra trước nó. Trước khi Laravel trở nên nổi tiếng, đã có một loạt các PHP framework khác và những sự thay đổi trong PHP và các công cụ phát triển web khác.
Ruby on Rails
David Heinemeier Hansson đã phát hành phiên bản đầu tiên của Ruby on Rails vào năm 2004, và thật khó để tìm thấy một framework để phát triển ứng dụng web kể từ đó, điều đó đã bị ảnh hưởng bởi Rails theo một cách nào đó.
Rails phổ biến MVC, API API RESTful, quy ước về cấu hình, ActiveRecord và nhiều công cụ và quy ước khác có ảnh hưởng sâu sắc đến cách các nhà phát triển web tiếp cận ứng dụng của họ – đặc biệt là liên quan đến phát triển ứng dụng nhanh chóng.
Dòng chảy của các PHP Framework
Rõ ràng với hầu hết các nhà phát triển rằng Rails và các framework web tương tự, là làn sóng của tương lai và các framework PHP, bao gồm cả các framework được thừa nhận, các framework bắt đầu phát triển cũng như các framework đang bật lên nhanh chóng.
CakePHP là sản phẩm đầu tiên vào năm 2005 và ngay sau đó là Symfony, CodeIgniter, Zend Framework và Kohana (một ngã ba CodeIgniter). Yii đến vào năm 2008, và Aura và Slim vào năm 2010. 2011 đã mang ra FuelPHP và Laravel, cả hai đều không phải là nhánh của CodeIgniter, mà thay vào đó được đề xuất như là lựa chọn thay thế.
Một số framework có nhiều Rails-y hơn, tập trung vào các trình ánh xạ quan hệ đối tượng cơ sở dữ liệu (ORM), cấu trúc MVC và các công cụ khác nhắm đến mục tiêu phát triển nhanh. Những framework khác, như Symfony và Zend, tập trung nhiều hơn vào các mẫu thiết kế doanh nghiệp và thương mại điện tử
Cái tốt và cái chưa tốt của CodeIgniter
CakePHP và CodeIgniter là hai framework PHP ban đầu cởi mở nhất về mức độ cảm hứng của họ được rút ra từ Rails. CodeIgniter nhanh chóng nổi tiếng và đến năm 2010 được cho là phổ biến nhất trong các framework PHP.
CodeIgniter đơn giản, dễ sử dụng và tự hào về tài liệu tuyệt vời và một cộng đồng mạnh mẽ. Nhưng việc sử dụng công nghệ hiện đại và các mẫu của nó phát triển chậm, và khi thế giới framework phát triển và công cụ PHP phát triển, CodeIgniter bắt đầu tụt hậu về cả tiến bộ công nghệ và các tính năng vượt trội. Không giống như nhiều framework khác, CodeIgniter được quản lý bởi một công ty và họ chậm bắt kịp với các tính năng mới hơn của PHP 5.3 như namespaces và chuyển sang GitHub và sau đó là Composer. Đó là vào năm 2010, Taylor Otwell, người tạo ra Laravel, đã không hài lòng với CodeIgniter và anh ấy đã bắt đầu viết ra framework của riêng mình.
Laravel 1, 2 và 3
Bản beta đầu tiên của Laravel 1 đã được phát hành vào tháng 6 năm 2011 và nó được viết hoàn toàn từ đầu. Nó có tính năng ORM tùy chỉnh (Eloquent); định tuyến dựa trên routing (lấy cảm hứng từ Ruby Sinatra); một hệ thống mô-đun để mở rộng; và trợ giúp cho các biểu mẫu form, xác nhận, xác thực người dùng, và nhiều hơn nữa.
Sự phát triển sớm của Laravel trở lên nhanh chóng, và lần lượt Laravel 2 và 3 được phát hành vào tháng 11 năm 2011 và tháng 2 năm 2012. Họ đã giới thiệu controllers, unit testing, command- line tool, IoC, mối quan hệ Eloquent (Eloquent relationships) và migrations.
Laravel 4
Với Laravel 4, Taylor viết lại toàn bộ từ đầu. Đến thời điểm này, Composer, trình quản lý package phổ biến hiện nay của PHP, đã có dấu hiệu trở thành một tiêu chuẩn công nghiệp và Taylor thấy giá trị của việc viết lại Laravel như một bộ sưu tập các component, được phân phối và kết hợp với nhau bởi Composer.
Taylor đã phát triển một bộ các thành phần với tên mã Illuminate và vào tháng 5 năm 2013, đã phát hành Laravel 4 với cấu trúc hoàn toàn mới. Thay vì gói phần lớn mã của nó dưới dạng tải xuống, giờ đây, Laravel đã lấy phần lớn các thành phần từ Symfony (một framework khác phát hành các thành phần của nó để người khác sử dụng) và các thành phần Illuminate thông qua Composer .
Laravel 4 cũng giới thiệu hàng đợi-queues, email, tạo dữ liệu mẫu-seeding.
Laravel 5
Laravel 4.3 đã được lên kế hoạch phát hành vào tháng 11 năm 2014, nhưng khi sự phát triển tiến triển, rõ ràng tầm quan trọng của những thay đổi của nó là một bản phát hành chính, và Laravel 5 đã được phát hành vào tháng 2 năm 2015.
Laravel 5 có cấu trúc thư mục được tân trang lại, loại bỏ biểu mẫu và trình trợ giúp HTML, giới thiệu giao diện interfaces, một loạt các chế độ xem mới, Socialite để xác thực phương tiện truyền thông xã hội, Elixir để biên dịch tài sản, Scheduler biểu để đơn giản hóa cron, dotenv để quản lý môi trường đơn giản, form request và REPL hoàn toàn mới.
Laravel có gì đặc biệt?
Vậy điều gì làm nên sự khác biệt của Laravel? Tại sao nó đáng để sử dụng hơn một framework PHP khác? Hãy tìm hiểu những gì làm cho Laravel trở lên đặc biệt.
Triết lý của Laravel
Bạn chỉ cần đọc qua các tài liệu marketing của Laravel và READMEs để bắt đầu thấy các giá trị của nó. Taylor sử dụng những từ liên quan đến ánh sáng như là “Illuminate” và “Spark”. Và sau đó là: “Nghệ nhân-Artisan”, “Thanh lịch-Elegant.” Ngoài ra, đây là: Hơi thở của không khí trong lành. “Khởi đầu mới-Fresh start” Và cuối cùng là: Rapid Rapid. Tốc độ Warp.
Hai giá trị được truyền đạt mạnh mẽ nhất của Laravel là tăng tốc độ của nhà phát triển và hạnh phúc của nhà phát triển. Taylor đã mô tả ngôn ngữ của Nghệ nhân là cố ý tương phản với các giá trị thực dụng hơn. Bạn có thể thấy nguồn gốc của kiểu suy nghĩ này trong câu hỏi năm 2011 của anh ấy trên StackExchange, trong đó anh ấy đã nói – “đôi khi tôi dành thời gian (giờ) lố bịch để làm cho mã trông khá đẹp – chỉ vì một trải nghiệm tốt hơn khi tìm kiếm tại chính mã ấy” Và anh ấy thường nói về giá trị của việc giúp các nhà phát triển dễ dàng và nhanh chóng hơn để đưa ý tưởng của họ thành hiện thực, thoát khỏi những rào cản không cần thiết để tạo ra những sản phẩm tuyệt vời.
Mục tiêu của Laravel là cung cấp mã và các tính năng rõ ràng, đơn giản và đẹp mắt, giúp các nhà phát triển nhanh chóng tìm hiểu, bắt đầu và phát triển và viết mã đơn giản, rõ ràng
Các khái niệm được viết rõ ràng trên các tài liệu của Laravel.Trong đó có viết “Happy developers make the best code” – tạm dịch: “các nhà phát triển hạnh phúc khi viết mã tốt nhất”. Tất nhiên, bất kỳ công cụ hoặc framework nào cũng sẽ nói rằng nó muốn các nhà phát triển được hạnh phúc. Nhưng việc có được hạnh phúc của nhà phát triển là mối quan tâm chính, thay vì thứ yếu, đã có tác động rất lớn đến phong cách và tiến trình ra quyết định của Laravel. Khi các framework khác có thể nhắm mục tiêu về độ tinh khiết của kiến trúc làm mục tiêu chính của chúng hoặc tương thích với các mục tiêu và giá trị của các nhóm phát triển doanh nghiệp, thì trọng tâm chính của Laravel là phục vụ nhà phát triển cá nhân.
Làm thế nào Laravel đạt được hạnh phúc của nhà phát triển
Việc nói rằng bạn muốn làm cho các nhà phát triển hạnh phúc là một điều. Làm điều này là một việc khác, và nó đòi hỏi bạn phải đặt câu hỏi điều gì trong một framework có khả năng làm cho các nhà phát triển không hài lòng và điều gì có khả năng làm cho họ hài lòng nhất. Có một vài cách mà Laravel cố gắng để làm cho các nhà phát triển có cuộc sống dễ dàng hơn.
Đầu tiên, Laravel là một framework phát triển ứng dụng nhanh chóng. Điều đó có nghĩa là nó tập trung vào việc học tập dễ dàng và giảm thiểu các bước giữa bắt đầu một ứng dụng mới đến khi phát hành. Tất cả các tác vụ phổ biến nhất trong việc xây dựng các ứng dụng web, từ tương tác cơ sở dữ liệu, xác thực đến hàng đợi, đến email, bộ nhớ đệm, được thực hiện đơn giản hơn bởi các thành phần mà Laravel cung cấp.
Chưa hết, Laravel cung cấp toàn bộ hệ sinh thái các công cụ để xây dựng và khởi chạy các ứng dụng một cách dễ dàng. Bạn có Homestead và Valet để phát triển trên môi trường local, Forge cho quản lý máy chủ và Envoyer để triển khai nâng cao. Và có một bộ gói bổ trợ: Cashier cho thanh toán và đăng ký, Echo cho WebSockets, Scout cho tìm kiếm, Passport để xác thực API, Socialite để đăng nhập bằng mạng xã hội và Spark để khởi động SaaS của bạn. Laravel đang cố gắng loại bỏ công việc lặp đi lặp lại khỏi các công việc của nhà phát triển để họ có thể làm một cái gì đó độc đáo.
Tiếp theo, Laravel tập trung vào”convention over configuration”, – nghĩa là nếu bạn sẵn sàng sử dụng cấu hình mặc định của Laravel, bạn sẽ phải làm việc ít hơn nhiều so với các framework khác yêu cầu bạn phải khai báo tất cả các cài đặt của mình ngay cả khi bạn sử dụng cấu hình mặc định. Các dự án được xây dựng trên Laravel mất ít thời gian hơn so với các dự án được xây dựng trên hầu hết các framework PHP khác.
Laravel cũng tập trung vào sự đơn giản. Nó có thể sử dụng cơ chế “dependency injection” và “Mocking” và kho lưu trữ dữ liệu và phân chia trách nhiệm truy vấn và tất cả các loại mẫu kiến trúc phức tạp khác với Laravel, nếu bạn muốn.
Cộng đồng Laravel
Một trong những yếu tố nổi bật của Laravel, đóng góp cho sự phát triển và thành công của nó, là cộng đồng giảng dạy, hỗ trợ của Laravel. Từ các video hướng dẫn về Laracasts của Jeffrey Way đến Laravel News đến các kênh Slack và IRC, từ bạn bè Twitter đến các blogger đến các hội nghị của Laracon, Laravel có một cộng đồng lớn và sôi động, những người đã có mặt từ ngày đầu tiên và những người sống một mình ngày một
Taylor đã hiểu từ những ngày đầu của Laravel rằng một dự án nguồn mở thành công cần có hai điều: tài liệu tốt và một cộng đồng lớn. Và hai điều đó bây giờ là đặc điểm nổi bật của Laravel.
Tại sao lại là Laravel?
Vậy – tại sao bạn nên sử dụng Laravel?
Bởi vì Laravel giúp bạn đưa ý tưởng của mình thành hiện thực mà không bị lãng phí mã, sử dụng các tiêu chuẩn mã hóa hiện đại, được bao quanh bởi một cộng đồng lớn, với một hệ thống các công cụ hỗ trợ vô cùng mạnh mẽ.
Và bởi vì bạn, nhà phát triển thân yêu, bạn xứng đáng được hạnh phúc.
Author: Phan Văn Luân
Tham khảo thêm: So sánh giữa Laravel và Phalcon