Khi bắt đầu học một ngôn ngữ lập trình nào đó, tốt hơn cả là bạn nên học sử dụng ngôn ngữ đó một cách thuần tuý, tức là học cách xây dựng một ứng dụng cơ bản bằng ngôn ngữ đó mà không dùng thêm bất kì một framework hoặc library nào hỗ trợ. Mục đích của việc này là để nắm được cách mà ngôn ngữ (hoặc công nghệ) đó hoạt động như thế nào (cú pháp, các lệnh cơ bản, …), cách tổ chức các lớp ứng dụng (tầng UI, tầng nghiêp vụ, tầng DB, …), cách mà ngôn ngữ đó kết hợp với các ngôn ngữ khác (vd: nhúng PHP trong HTML, cách gọi JS trong HTML, …), … Sau khi đã thực sự hiểu được cách mà ngôn ngữ đó hoạt động, lúc này bạn mới nên bắt đầu học cách sử dụng các framework.

Thế framework là gì? Về cơ bản, framework là một bộ khung ứng dụng đã được xây dựng sẵn, và thường kèm theo nó là những lớp source code hoặc công cụ cơ bản để hỗ trợ bạn dễ dàng hơn trong việc phát triển ứng dụng (ví dụ như: lớp trừu tượng hỗ trợ kết nối DB, model MVC cơ bản cho lập trình web, các lớp services, …). Chính vì thế, mỗi framework có 1 cách định ra những công cụ hỗ trợ khác nhau, và do đó cách mà bạn phát triển ứng dụng cũng từ đó mà có sự khác biệt.
Cùng một ngôn ngữ, nhưng cách mà bạn phát triển ứng dụng sẽ khác nhau đôi chút. Chính vì điều này mà bạn không nên học framework ngay từ đầu. Bởi vì bạn sẽ dễ lầm bị đi theo lối mòn mà framework đó vạch ra cho bạn thay vì thực sự hiểu được bản chất của vấn đề. Một khi bạn đã nắm được cơ bản về một ngôn ngữ và cách nó hoạt động, thì rất nhanh thôi, bạn cũng sẽ học được những framework của ngôn ngữ đó. Nhìn chung thì, bạn cũng nên tìm hiểu một vài framework thông dụng của ngôn ngữ mà bạn đang muốn sử dụng, có nhiều structure và cách giải quyết vấn đề rất hay mà bạn có thể học hỏi từ đó.
Và nếu, bạn đang tìm hiểu PHP, và muốn dùng thử 1 framework nào đó, hãy thử xem qua Laravel. Nhân tiện mình cũng giới thiệu luôn vài tài liệu mình đã xem qua, theo mình thì nó khá đầy đủ và dễ hiểu ở mức độ cơ bản. Hi vọng là sẽ tiết kiệm được thời gian tìm kiếm của các bạn.
1. Setup môi trường phát triển
Laravel framework thực ra cũng chỉ là PHP, và như mọi người đều biết, môi trường để phát triển PHP điển hình gồm có: PHP, Mysql quản lí DB, web server là Apache. Bạn có thể cài thủ công từng thành phần hoặc có thể dùng XAMPP để hỗ trợ cài all-in-one cho nhanh.
Với Laravel, mọi chuyện còn đơn giản hơn thế, cộng đồng Laravel đã tạo sẵn một máy ảo Homestead. Máy ảo được cung cấp sẵn thông qua một vagrant box, bạn có thể cài đặt và khởi động chỉ với 1 dòng lệnh. Tất cả những gì bạn cần làm là cài Vagrant và trình máy ảo VirtualBox vào máy tính, sau đó dùng vagrant để tạo 1 máy ảo Homestead trong VirtualBox, vậy là có đầy đủ đồ chơi để bắt đầu develop. Nếu có thời gian bạn cũng nên tim hiểu 1 chút về Vagrant, về cơ bản nó cung cấp command-line để ta điều khiển các môi trường ảo hoá (như VirtualBox, VMware, …)

Chi tiết về cách setup môi trường Homestead được trình bày chi tiết và rõ ràng ở đây: Laravel Homestead (official), Laravel Homestead (kipalog).
2. Tài liệu tìm hiểu & thực hành
Sau một thời gian dài xem qua nhiều tài liệu, cả tiếng Việt lẫn tiếng Anh, mình rút ra một kinh nghiệm là: tài liệu chính thống trên trang chủ của Laravel là ngon lành cành đào nhất. Không phải mình chê bai gì nhưng hầu hết những tài liệu hướng dẫn Laravel tiếng Việt đều hoặc là cũ hoặc là … tào lao.
Laravel có hẳn 1 trang Laracast chuyên chứa các tài liệu và khoá học về Laravel, có phí và cả miễn phí (các course học miễn phí cũng rất tốt). Các kiến thức về programming trong này không chỉ gói gọn trong khuôn khổ PHP, mà bạn còn có thể ứng dụng vào bất kì ngôn ngữ nào khác.

Nếu bạn hoàn toàn chưa biết gì về Laravel, thì những khoá kiểu như >>Laravel 5.4 from scratch<< sẽ rất phù hợp với bạn. Bạn sẽ được hướng dẫn từ những thứ cơ bản như Routing, Views, … tới những khái niệm cốt lõi của Laravel như: Service provider, ORM với lớp Eloquent (là một ORM dạng Active record), query builder, Controllers, … Những khái niệm nâng cao như: Eventing, View composer, design pattern thông dụng (Repository), cơ bản về auto testing, … Điểm đặc biệt của khoá học là tính xuyên xuốt của chương trình từ đầu cho tới cuối. Mọi kiến thức được kết nối với nhau 1 cách rất tự nhiên và rõ ràng. Bạn sẽ thực hành luôn từ đầu tới cuối, và ứng dụng thực hành sẽ tương đối đầy đủ khi khoá học kết thúc.
Tài liệu ở link giới thiệu ở trên là dạng video, rất trực quan và dễ hiểu. Một điểm mạnh của những khoá học này là đã có nhiều lượt tương tác. Nếu bạn bị bí kèo, bạn có thể kéo xuống phần comments, có thể bạn sẽ tìm được hướng giải quyết ở đó. Phần này cũng chứa rất nhiều điều thú vị, có những comment cười muốn té ghế, các bạn tự tìm hiểu nhé. Về độ dài, khoá học có 32 videos, mỗi video dài từ 5-7p, các bạn cứ nhân lên thêm 3 đến 4 lần nữa (tức là mỗi video coi và code theo là 20-30p) sẽ ra thời gian để vừa học vừa suy ngẫm.
3. Các bạn cần chuẩn bị gì?
Về IDE để hỗ trợ coding, nếu bạn lập trình PHP thì PHPStorm là một IDE rất đáng giá để bạn cân nhắc, dù cho nó tính phí nhưng mình thấy đồng tiền bỏ ra là xứng đáng.
Ngoài ra, do Laravel là một framework, nên đương nhiên là bạn sẽ bị bó buộc suy nghĩ vào trong cách code và tổ chức trương trình của nó. Bạn nên có trước kiến thức về PHP thuần, kiến thức về một vài kĩ thuật coding và design pattern như: SOLID, dependency injection, Repository pattern, ORM trong thao tác DB, … Đương nhiên là cũng nên có kiến thức nền về HTML, CSS, Javascript.
Nếu bạn đã nắm chắc cơ bản về PHP và các kĩ thuật coding, sẽ không khó khăn gì để học và sử dụng Laravel framework, bạn chỉ cần kiên nhẫn 1 chút là được. Theo mình, nếu như bạn chưa vững kiến thức nền mà bạn đã học Laravel rồi thì … cũng chẳng sao, nhưng sẽ khó hăn hơn 1 chút trong việc hiểu vấn đề và phát triển logic vấn đề đi xa hơn nếu có nhu cầu.
Kiến thức cơ bản là nội công, framework là chiêu thức, nếu nội công tốt thì học thêm nhiều chiêu thức hay sẽ giúp bạn tiến xa, còn nếu không thì chỉ khiến bạn tẩu hoả và rối thêm thôi. Các bạn nên cân nhắc trước khi tìm hiểu, điều quan trọng là … đừng sợ =)))
Chúc vui & enjoy coding 🙂