26/07/2019, 10:19

Những ví dụ PHP thực tế tốt nhất mà mọi lập trình viên nên biết

PHP là ngôn ngữ được sử dụng rất nhiều trong lập trình web . Dưới đây là những ví dụ PHP thực tế tốt nhất mà mọi lập trình viên đều nên biết và làm theo. Từng là một lập trình viên PHP, cũng làm những dự án lớn nhỏ của cá nhân, của công ty các thứ. Thì sau một thời gian dựa vào ...

ví dụ PHP thực tế

PHP là ngôn ngữ được sử dụng rất nhiều trong lập trình web. Dưới đây là những ví dụ PHP thực tế tốt nhất mà mọi lập trình viên đều nên biết và làm theo.

Từng là một lập trình viên PHP, cũng làm những dự án lớn nhỏ của cá nhân, của công ty các thứ. Thì sau một thời gian dựa vào kinh nghiệm bản thân cũng như tìm hiểu qua bác google, mình cũng đúc rút ra được một số thứ hay ho muốn chia sẻ cho mọi người cùng đọc.

  Lập trình PHP và những câu hỏi thường gặp khi phỏng vấn
  5 tính năng mới trong PHP 7 cần phải biết

Bật cảnh báo lỗi (error reporting) trong quá trình phát triển

Trong quá trình phát triển, cảnh báo lỗi (error reporting) là công cụ tốt. Các cảnh báo lỗi này giúp bạn tìm ra những lỗi chính tả trong biến, phát hiện hàm sử dụng sai và rất nhiều thứ khác nữa. Tuy nhiên, khi web project đã được đưa lên chạy thực tế thì bạn cần phải tắt nó đi, vì nó có thể cho người dùng biết rất nhiều thứ về trang web của bạn như: phần mềm bạn sử dụng, cấu trúc folder, …

Bạn có thể dử sử dụng hàm error_reporting(0); để tắt cảnh báo.

Một lần nữa, mình xin nhắc lại là khi project của bạn đã public thì bạn nên tắt error reporting đi, vì nếu không tắt đi thì các lỗi có trong project sẽ hiển thị lên cho người dùng thấy, và kéo theo đó bao nhiêu vấn đề.

Khuyến khích sử dụng <?php ?>

Có một số cách để để viết code php như:

Tất cả 4 kiểu trên đều hiển thị ra là manhnv.com. Nhưng chỉ có một kiểu <?php ?> là mặc định, còn lại những kiểu còn lại đều bị vô hiệu hóa, nếu bạn muốn sử dụng thì bắt buộc bạn phải kích hoạt nó lên bằng cách cấu hình server PHP với tùy chọn short_open_tag.

Do đó, cách tốt nhất để đảm bảo code của bạn chạy tốt trên tất cả mọi server, cũng như mọi phiên bản nếu có cập nhật lên cao hơn nữa, thì mình khuyên bạn nên sử dụng định dạng <?php ?>.

Nhưng nếu tự triển khai một server PHP của bản thân, hoặc một server bạn có quyền điều khiển, và muốn sử dụng kiểu 1,2,3 thì bạn có thể tự cấu hình cho server của mình sử dụng thẻ nào ngắn gọn và thuận tiện hơn. Nhưng hãy nhớ rằng thẻ <? ?> có thể xung đột với XML và <% %> là kiểu viết của ASP.

Sử dụng tên biến, tên class có ý nghĩa và nhất quán

Có hai chuẩn đặt tên phổ biến:

  • camelCase: Chữ cái đầu tiên của mỗi từ được viết hoa, trừ từ đầu tiên.
  • underscores: Thêm dấu gạch dưới giữa các từ.

Trên đây là 2 chuẩn phổ biến nhất, bạn nên chọn cho mình 1 trong 2 quy ước để code. Tuy nhiên, hãy dùng một cách nhất quá, tức là dùng 1 chuẩn cho từ đầu đến cuối project, không nên dùng nửa vời kiểu này sang kiểu kia.

Mình thì lúc code php mình sẽ dùng kiểu camelCase nhưng lúc code ngôn ngữ khác như python thì lại dùng underscores.

Hoặc các bạn cũng có thể kết hợp 2 chuẩn lại với nhau theo kiểu: biến thì chuẩn underscores và các function chuẩn camelCase, và ngược lại. Nhưng chắc chắn rằng bạn phải đảm bảo code nhất quán trong project.

Ví dụ: biến dùng underscores thì phải dùng underscores từ đầu cho đến cuối project.

Đừng nên viết code lồng nhau quá nhiều mức

Lồng nhau quá nhiều mức sẽ làm cho code trở nên khó đọc, ví dụ như vầy:

Các có thấy, đoạn code trên rất khó đọc, khó hiểu, và khó maintain. Để code dễ đọc hơn, dễ maintain hơn thì hãy giảm mức độ lồng nhau lại, như:

Hãy nhớ Comment, Comment và Comment đầy đủ khi code.

Hãy nhớ Comment đẩy đủ khi code. Nó rất là quan trọng khi dự án có thể dài hơi kéo dài tận 5, 10 hay 15 năm thì chắc chắn đội phát triển dự án sẽ thay đổi rất nhiều và khi bạn comment thì những người vào dự án sau sẽ hiểu được code của bạn đã từng code như thế nào, và khi dự án đã relase nhưng sau một thời gian xảy ra lỗi thì đội phát triển nhận project để maintain có thể hiểu code nó hoạt động như thế nào, và sửa lỗi một cách nhanh chóng và dễ dàng.

Và cả khi dự án là của cá nhân, không cần làm việc nhóm thì bạn cũng nên comment lại chức năng mình làm, vì có thể sau một thời gian đọc lại code mà không có comment thì bạn sẽ không biết là mình đã từng code cái gì nữa.

Ví dụ đây là một chức năng tạo mới user:

Không đặt phpinfo() trong webroot của bạn

Phpinfo là một chức năng rất hữu ích. Đơn giản là bạn tạo một tệp PHP có

và bạn đặt nó vào ở đâu đó trên server, bạn có thể biết mọi thứ về môi trường server của mình. Tuy nhiên, rất nhiều lập trình viên sẽ đặt tệp chứa phpinfo() trong webroot. Thực tế điều này sẽ không an toàn một tý nào. Hãy xóa nó sau khi bạn xem xong thông tin cần thiết.

Không bao giờ tin tưởng người dùng

Nếu ứng dụng của bạn có chỗ cho người dùng nhập dữ liệu vào, bạn phải luôn nghĩ là họ sẽ cố gắng nhập mọi thứ gây lỗi cho hệ thống. Cách tốt nhất để giữ cho trang web của bạn không bị các hacker tấn công XSS hay SQLinjection, là luôn kiểm tra mọi dữ liệu người dùng nhập vào.

Ví dụ một đoạn code thể hiện chức năng lấy thông tin một bài viết không kiểm tra đầu vào và dẫn tới lỗ hổng SQLinjection:

Các bạn có thể thấy câu lệnh $sql = "SELECT * FROM posts WHERE id=". $_GET['id']; biến $_GET['id'] được lấy trực tiếp truy vấn vào database mà không lọc dữ liệu, những kẻ tấn công có thể dựa vào đó thể injection nhưng câu lệnh sql đọc hại vào.

Sau đây mình có 3 cách để bảo vệ được câu lệnh trên:

  • Dùng PDO PHP Data Objects

PDO là một phần tiện ích mở rộng của PHP, nó giúp website bạn trở nên nhanh và an toàn hơn

  • Sử dụng hàm mysqli_real_escape_string()

Hàm này giúp bạn loại bỏ những kí tự không cần thiết trước khi xử lí câu lệnh SQL.

  • Sử dụng hàm preg_replace()

preg_replace() giúp bạn loại bỏ những kí tự được chỉ định giúp câu lệnh trở nên an toàn hơn.

Sử dụng cơ chế bộ nhớ cache

Bộ nhớ cache web (hoặc bộ nhớ cache HTTP) hay còn gọi là Web caching là một công nghệ thông tin để lưu trữ tạm thời (lưu trữ) các dữ liệu web như: các trang và hình ảnh HTML, để giảm tải băng thông, giảm tải máy chủ. Một hệ thống lưu trữ web lưu trữ bản sao các dữ liệu đi qua nó.

Một số hệ thống bộ nhớ cache mạnh mẽ có miễn phí:

  • Memcached
  • APC
  • Zend Cache
  • eAccelerator

Giữ các function chạy ở bên ngoài vòng lặp (loops)

Project của bạn sẽ giảm hiệu suất rất nhiều khi bạn lạm dụng đưa các function vào bên trong vòng lặp. Vòng lặp càng lớn, thời gian thực hiện càng lâu. Vì vậy nên đặt các function bên ngoài vòng lặp nếu có thể.

Một ví dụ tệ hết sức tệ khi đặt function vào trong vòng lặp:

Bạn có thể viết lại đoạn code trên để code tường mình cũng như hiệu suất tốt hơn.

Không sao chép các biến phụ nếu không cần thiết

Một số bạn muốn làm cho code trông kinh khủng hơn, nhiều dòng hơn (để người khác nhìn vào cho ngầu) bằng cách sao chép các biến có trước vào một biến mới. Tuy nhiên, thực sự không tốt khi làm như vậy vì nó làm giảm hiệu suất và khả năng tăng gấp đôi bộ nhớ khi chạy lệnh.

Một ví dụ minh họa cho điều mình nói bên trên: