PHP là tên gọi ngôn ngữ lập trình dạng kịch bản (ngôn ngữ script) chuyên dùng để viết thành phần server cho ứng dụng webđược phát triển bởi Rasmus Lerdorf từ năm 1994. Trên Internet hiện nay, số lượng website viết bằng PHP chiếm số lượng áp đảo. PHP được dùng để viết từ các site nhỏ (như blog cá nhân) đến các site khổng lồ như Facebook hay Wikipedia.

Tại sao học lập trình PHP?

PHP (Hypertext Preprocessor) là một trong những ngôn ngữ lập trình phổ biến hàng đầu trên thế giới hiện nay. Dù có nhiều bảng thống kê, PHP luôn nằm trong top 5 ngôn ngữ phổ biến nhất.

Hiện nay rất nhiều website lớn được viết bằng PHP như Facebook, Wikipedia. Đặc biệt, WordPress – một CMS và framework phổ biến hàng đầu cho website – cũng được viết bằng PHP. Theo dữ liệu của Google, đến năm 2016, ngôn ngữ PHP được sử dụng để tạo ra hơn 80% số website trên toàn cầu. Bản thân blog Hoclamweb123.com cũng được xây dựng trên WordPress – nghĩa là cũng sử dụng PHP!

Số lượng công việc liên quan đến lập trình PHP rất cao. Vô số công việc freelancer cũng như các công ty phần mềm có nhu cầu tuyển dụng lập trình viên PHP.

Vì vậy, học lập trình PHP là một nội dung quan trọng ở các trường cũng như các trung tâm. Hiện nay cũng có rất nhiều khóa học online liên quan đến lập trình PHP. Tuy vậy, các khóa học này thường tính phí tương đối cao.

Hiện nay không có nhiều tài liệu bài bản cập nhật về lập trình PHP bằng tiếng Việt. Bạn có thể dễ dàng tìm thấy hàng ngàn bài viết về lập trình PHP tiếng Việt nhưng rất khó tìm được một tài liệu trọn vẹn, bài bản, hệ thống.

Ưu điểm của ngôn ngữ lập trình PHP

Trước khi bắt đầu hành trình dài với PHP, có lẽ nên điểm qua một số ưu thế của PHP so với các ngôn ngữ với cùng năng lực như Python, Ruby, Node.js, Perl, C# hay Java.

PHP có hiệu suất rất cao và khả năng mở rộng tốt. Bạn có thể sử dụng PHP trên những máy chủ rẻ tiền nhưng vẫn có thể xử lý số lượng lớn truy vấn. Khi cần thiết có thể dễ dàng nâng cấp và mở rộng phần cứng cho máy chủ. Không phải ngẫu nhiên mà những website khổng lồ như Facebook hay Wikipedia sử dụng PHP.

PHP có thể làm việc với nhiều hệ quản trị cơ sở dữ liệu. Trong đó, MySQL là hệ quản trị cơ sở dữ liệu được sử dụng phổ biến nhất cùng PHP. Ngoài ra, PHP làm việc được với gần như tất cả các hệ quản trị thông dụng như SQL Server, Oracle, MongoDB, PostgresSQL. PHP 5 và PHP 7 tích hợp sẵn với SQLite. PHP cũng làm việc được với ODBC (Open Database Connectivity).

PHP có hệ thống thư viện tích hợp lớn hỗ trợ các công việc liên quan đến Internet như kết nối dịch vụ web, phân tích mã XML, gửi email, làm việc với cookie. Tất cả những gì cần thiết để phát triển ứng dụng web đều được PHP hỗ trợ.

Chương trình dịch của PHP hoạt động đa nền tảng và có thể tích hợp với tất cả các chương trình máy chủ web phổ biến. PHP có chương trình dịch cho cả Linux, Mac, Windows. Chương trình dịch PHP cũng tích hợp được với chương trình máy chủ web như Apache, Nginx, IIS.

Trên PHP có rất nhiều các framework và CMS. Chúng giúp phát triển ứng dụng web trên PHP nhanh chóng và hiệu quả hơn nhiều so với trực tiếp sử dụng các công cụ cơ bản của ngôn ngữ.

Học lập trình PHP để làm gì?

Câu hỏi này nghe có vẻ hơi thừa. Học lập trình dĩ nhiên là để viết chương trình, trong trường hợp của PHP là ứng dụng web.

Tuy nhiên, bạn cần biết rằng, xây dựng một ứng dụng mới từ ngôn ngữ PHP và các công cụ cơ bản nó cung cấp mất rất nhiều thời gian và công sức. Ngoài ra còn vô số các vấn đề phát sinh riêng đối với các ứng dụng web như xử lý cơ sở dữ liệu, bảo mật, tối ưu hóa, caching, v.v..

Vì vậy, các công ty luôn sử dụng các công cụ hỗ trợ để tăng hiệu quả.

Phổ biến nhất là sử dụng một trong các web framework xây dựng trên PHP. Web framework là những chương trình khung với các tính năng cơ bản chung đã được xây dựng sẵn. Bên trên cái khung này, đội ngũ lập trình sẽ xây dựng những tính năng riêng biệt của ứng dụng theo yêu cầu.

Có rất nhiều web framework cho PHP. Phổ biến hàng đầu hiện nay là Laravel, CodeIgniter, Symfony, Zend, Phalcon.

Một hướng khác là sử dụng một hệ quản trị nội dung (Content Management System, CMS). CMS là những ứng dụng web đã xây dựng hoàn chỉnh. Đội ngũ phát triển chỉ cần xây dựng nội dung và tinh chỉnh tính năng cho phù hợp yêu cầu.

CMS phổ biến nhất hiện nay là WordPress. Ngoài ra còn có Magento, Drupal, Joomla, và rất nhiều CMS khác nữa.

Như vậy, bạn phải hiểu rằng, học ngôn ngữ lập trình PHP chỉ là bước khởi đầu. Việc sử dụng trực tiếp các công cụ lập trình cơ bản của PHP để viết ứng dụng chỉ phù hợp cho các dự án môn học hay bài tập lớn.

Để làm việc, bạn cần nắm vững ngôn ngữ lập trình PHP để tiếp tục học cách làm việc với một trong số các framework hoặc CMS phổ biến.

Bạn cũng lưu ý rằng, đừng vội vàng tiếp cận framework hoặc CMS khi chưa thành thạo PHP. Hãy nhớ, PHP là cái gốc, framework/CMS là phần ngọn. Đừng đi đường tắt. Nó rất có hại cho bạn về lâu dài.

Bạn cần học những gì để phát triển ứng dụng web?

Ứng dụng web là dạng ứng dụng client/server tương đối phức tạp. Để xây dựng ra một ứng dụng web hoàn chỉnh đòi hỏi sự kết hợp của nhiều ngôn ngữ và công nghệ khác nhau.

Thành phần server của ứng dụng web là một chương trình chạy trên một máy tính độc lập gọi là máy chủ. Thành phần server được viết bằng một trong số các ngôn ngữ lập trình hỗ trợ web như PHP, C#, Java, Python, JavaScript (Node.js).

Thành phần server tự nó cũng không phải là một chương trình độc lập mà là thành phần mở rộng của một trong số các chương trình máy chủ web. Hiện có nhiều chương trình máy chủ web khác nhau: Apache, IIS, Nginx. Lựa chọn server và ngôn ngữ lập trình thường đi thành combo. Ví dụ, PHP thường dùng với Apache hoặc Nginx, C# thường đi cùng IIS.

Người chuyên phát triển thành phần server được gọi là backend developer.

Thành phần client của ứng dụng web là loại “chương trình” đặc biệt chạy bên trong trình duyệt. Thành phần client được tạo ra từ 3 thành phần riêng biệt: nội dung (HTML), hình thức (CSS), tương tác (JavaScript).

Nội dung của client được tạo ra bởi HTML – loại ngôn ngữ đánh dấu siêu văn bản. HTML không phải là một ngôn ngữ lập trình. Nó là một ngôn ngữ giúp tạo ra nội dung.

Hình thức của client được chỉ định bởi CSS – Cascading Style Sheet. CSS cũng không phải là một ngôn ngữ lập trình. Nó là ngôn ngữ cho phép áp dụng các định dạng khác nhau cho nội dung (HTML).

Nếu chỉ có nội dung và hình thức, một “ứng dụng” web sẽ chỉ là tập hợp của các trang web “tĩnh”. Các tương tác với người dùng và nội dung động được tạo ra bởi JavaScript. JavaScript là một ngôn ngữ lập trình thực sự. Điểm đặc thù của JavaScript là nó được dịch và thực thi bên trong trình duyệt.

Người chuyên phát triển thành phần client được gọi là front-end developer.

Người đảm nhiệm được cả hai thành phần được gọi là fullstack developer.

Thành phần client và thành phần server hoạt động trên các máy tính khác nhau và trao đổi dữ liệu qua mạng. Quá trình trao đổi dữ liệu này được hỗ trợ bởi một giao thức truyền thông tên gọi là HTTP (Hyper Text Transfer Protocol). Sự hiểu biết về HTTP rất quan trọng để thực hiện các tính năng của ứng dụng.

Một thành phần không thể thiếu của ứng dụng web là cơ sở dữ liệu. Hầu như ứng dụng “đàng hoàng” nào cũng cần đến một cơ sở dữ liệu thực sự như MySQL, Oracle hay SQL Server. Ngôn ngữ sử dụng chính cho cơ sở dữ liệu là (các biến thể) SQL.

Qua đây bạn cần nhớ rằng, để học phát triển ứng dụng web thì mình PHP là không đủ!

Cần biết những gì trước khi học lập trình PHP?

Trước hết cần lưu ý rằng PHP là ngôn ngữ chuyên dùng cho phát triển ứng dụng web.

Ứng dụng web là loại ứng dụng rất phức tạp. Như trên đã nói, một ứng dụng web luôn bao gồm nhiều thành phần, tạo ra bởi nhiều ngôn ngữ và công nghệ.

Do vậy, để làm ra một ứng dụng web cơ bản nhất, bên cạnh ngôn ngữ lập trình cho server, bạn cần sự hiểu biết nhất định về mạng/giao thức, cơ sở dữ liệu, ngôn ngữ HTML, ngôn ngữ CSS.

Nhìn chung, phát triển ứng dụng web dành cho những bạn đã có kinh nghiệm nhất định chứ không dành cho những bạn mới nhập môn lập trình.

Do ngôn ngữ PHP sử dụng cú pháp tương tự C, nếu bạn đã từng học một trong số các ngôn ngữ trong họ C (C++, C#, Java), bạn sẽ rất dễ dàng làm quen với PHP.

Vì lý do này, tập bài giảng này dành cho những bạn đã học xong lập trình cơ bản, lập trình hướng đối tượng, có những kiến thức nhất định về mạng máy tính, cơ sở dữ liệu, có thể tự học HTML/CSS.

Một điều khá may mắn là HTML hay CSS đều tương đối dễ học và vận dụng. Bạn hoàn toàn có thể tự học các nội dung cơ bản trong thời gian ngắn.

Cách tiếp cận khi học lập trình PHP

Do ngôn ngữ lập trình PHP sử dụng chủ yếu trong phát triển ứng dụng web, các tài liệu dạy lập trình PHP ngay từ đầu sẽ gắn với xây dựng ứng dụng web. Cách tiếp cận này có một nhược điểm.

Ứng dụng web phức tạp với nhiều thành phần viết bằng nhiều ngôn ngữ: phần nội dung được diễn đạt bằng HTML; phần hình thức được chỉ định qua CSS; thành phần xuất nhập dữ liệu chạy trên trình duyệt; thành phần xử lý (viết bằng PHP) chạy trên web server.

Như vậy, để học ngôn ngữ lập trình PHP, bạn đồng thời cũng phải học và hiểu tất cả các thành phần liên quan.

Dĩ nhiên, để học phát triển ứng dụng web, bạn phải biết tất cả các vấn đề trên. Tuy nhiên, với mục đích học ngôn ngữ PHP, chúng lại trở thành yếu tố nhiễu gây cản trở việc tiếp thu các vấn đề của riêng ngôn ngữ PHP.

Một đặc điểm quan trọng của PHP mà nhiều khóa học bỏ quên là khả năng chạy script với giao diện dòng lệnh (CLI) của chương trình dịch PHP. Đặc điểm này của PHP không có gì khác biệt với chương trình dịch của Python, Java, C# (.NET Core).

Do vậy, tập bài giảng này sử dụng một cách tiếp cận khác. Ban đầu chúng ta sẽ không gắn PHP với môi trường web. Thay vào đó chúng ta sẽ sử dụng PHP CLI để học làm việc với các thành phần cơ bản của ngôn ngữ. Khi đã thông thạo PHP cơ bản chúng ta sẽ gắn PHP với ứng dụng web sau.

PHP CLI giúp bạn viết các ứng dụng với giao diện dòng lệnh (console) như khi học các ngôn ngữ khác. Qua đó, việc học tập trung vào chính cú pháp của ngôn ngữ.

Cách tiếp cận này có thêm một số ưu điểm khác

Việc sử dụng PHP CLI từ đầu giúp bạn đi theo con đường học lập trình quen thuộc bắt đầu từ ứng dụng console giống như khi học C/C++, C#, Java, Python.

Nó giúp bạn hình dung đầy đủ hơn về khả năng của PHP như một ngôn ngữ lập trình “bình thường” như Python hay C#, chứ không phải là một ngôn ngữ chỉ gặp trên web.

Sử dụng được PHP CLI cũng giúp bạn mở rộng khả năng sử dụng PHP cho những tác vụ như viết các script quản trị hệ thống. Từ khía cạnh này, bạn có thể sử dụng PHP ở những công việc tương tự như Perl.