Top 6 mẹo của PHP giúp anh em code tốt hơn
Học lập trình chính quy, bài bản, từ A tới Z nhưng đôi khi anh em quên mất ngôn ngữ lập trình nào cũng có tip và trick. Tip và trick là những lưu ý nhỏ đôi khi anh em quên mất, nhưng chính tip với trick nho nhỏ đó đôi khi lại giúp đỡ anh em rất nhiều.
Anh em lập trình PHP nên biết những trick này, biết để dùng cho đúng, đôi khi một mẹo hay đáng giá hơn ngàn lượng vàng. Ngoài ra biết mẹo đỡ mất công anh em research, xử nhanh gọn vấn đề tiết kiệm thời gian.
![mẹo PHP](https://topdev.vn/blog/wp-content/uploads/2023/12/meo-php-3.webp)
Bắt đầu thôi anh em, có trick nào hay thì lưu lại, hoặc bookmark cả bài viết sau mà tìm kiếm cho dễ nha!
1. If và else
Tips và trick này là đơn giản và phổ biến nhất khi anh em làm việc với PHP. Thông thường nhiều anh em sẽ thấy tip này trước đây nhưng chưa chú ý lắm. Nói chung if mà đi với else thì không có gì sai.
Rõ ràng là sinh ra if để đi với else, trước nay vẫn thế, tuy nhiên đôi khi else là dư thừa không cần thiết. Anh em xem thử ví dụ sau đây:
function output_gender(bool $user_is_male) { if ($user_is_male) { return "User is male"; } else { return "User is female"; } }
Trong trường hợp này kết quả đầu ra sẽ tuỳ thuộc vào biến $user_is_male
, giá trị true hay false. Lúc này else rõ ràng là dư thừa do return đã có ở trong, nếu đúng thì đã return và trả về code, không có gì phải else.
Viết lại ngắn gọn rõ ràng súc tích hơn như sau:
function output_gender(bool $user_is_male) { if ($user_is_male) { return "User is male"; } return "User is female"; }
Tip này tuy nhỏ, nhiều anh em có thể biết rồi nhưng cho những anh em mới, tip này sẽ khá là bổ ích
![mẹo PHP](https://topdev.vn/blog/wp-content/uploads/2023/12/meo-php-2.jpg)
2. Verifying multiple strings
Giả sử anh em muốn kiểm tra xem chuỗi string thuộc về case nào trong các case. Thường sử dụng switch case anh em sẽ viết như sau:
$item = "candy"; switch ($item) { case 'candy': return true; case 'toy': return true; default: return false; } // we're not adding break because we're using return // or if ($item == 'candy' || $item == 'toy') { return true; } return false;
Đoạn code này sẽ trả về true nếu chuỗi là candy hoặc toy . Cách viết này hoàn toàn là đúng, không có gì sai nha anh em. Tuy nhiên cách viết này lặp đi lặp lại khá mất công sức. Thay vào đó anh em có thể sử dụng array
if (in_array($item, ["candy", "toy"])) { return true; } return false;
Thâm chí không cần cả if và else, chỉ một dòng duy nhất
return in_array($item, ["candy", "toy"]);
Cũng có một cách khác anh em có thể viết ngắn gọn như sau:
return ($item == 'candy' || $item == 'toy');
3. Hai dấu hỏi (??)
Anh em làm việc lâu với php chắc không còn lạ gì với double question mark. Đây là cách nhanh nhất để viết điều kiện if else trong code php. Anh em cùng xem qua ví dụ sau về mẹo PHP:
$data = [ "a" => 1, "b" => 2, "c" => null, ]; return $data["c"] ? $data["c"] : "No data";
Dòng cuối cùng này kiểm tra xem c có ở trong mảng data hay không?. Nếu không tồn tại sẽ trả về No data. Đống code loằng ngoằng khó chịu này có thể gom lại thành 1 dòng.
return $data["c"] ?? "No data";
Trường hợp này hai dấu hỏi ??, tương tự với || ở các ngôn ngữ lập trình khác. Tip này tuy đơn giản nhưng hữu ích và có thể nhiều anh em đã biết rồi. Tuy nhiên một số anh em có thể chưa biết nên lưu lại nhé.
Xem ngay tin tuyển dụng PHP lương cao trên TopDev
4. PHP và HTML
Trong quá trình làm dự án có cả Frontend và Backend, không tránh khỏi những lúc anh em muốn viết PHP trong HTML và HTML trong PHP. Thông thường anh em sẽ thực hiện mẹo PHP này như sau:
<?php foreach ($items as $item) { echo ' <div class="product__card"> <h3>{$item->name}</h3> </div> '; } ?>
Code này thì khá là rõ ràng, tuy nhiên HTML kiểu này anh em thường viết theo string. Mà viết theo string thì hay nhầm lẫn, thiếu tag, sai syntax các kiểu. Có một tips anh em có thể thử:
<?php foreach ($items as $item): ?> <div class="product__card"> <h3><?php echo $item->name; ?></h3> </div> <?php endforeach; ?>
Trường hợp có nhiều if else và for each, anh em có thể maintain theo cách sau:
foreach (...): // code endforeach; // also works with if if (...): // code endif; // also if (...) #one line code while(): // ... endwhile;
PHP mix với HTML chưa bao giờ là dễ
![mẹo PHP](https://topdev.vn/blog/wp-content/uploads/2023/12/meo-php-1.png)
5. Functional blocks
Function block (khối function), có thể là một tính năng đơn lẻ hoặc một tác vụ phức tạp, như ví dụ dưới đây anh em có thể viết function gọn nhẹ redirect to:
function redirectTo($route) { header("location: $route", true, 302); }
Với các function kiểu này, mỗi khi anh em muốn redirect tới home thì chỉ cần gọi function redirectTo. Thay vì
header("location: /home", true, 302)
anh em chỉ cần gọi functionredirectTo("/home")
. Viết function kiểu đó vừa gọn nhẹ, vừa clear. Code cũng tái sử dụng tốt hơn.
Ý tưởng này anh em cũng có thể apply cho gửi function và nhiều tác vụ khác. Đơn cử như gửi notification dưới đây.
UserNotification::send($user_id, $notification);
Mẹo PHP này tuy nhỏ nhưng khá bổ ích, anh em nhớ note lại nha.
6. Đệ quy và sự lặp lại
Mục đích của mẹo PHP này khá đơn giản, anh em nên cố gắng sử dụng đệ quy càng nhiều càng tốt. Thay vì lặp lại quá nhiều, cứ khi nào thấy quá nhiều thì cố gắng sử dụng đệ quy.
/** * Returns request data * * This methods returns data passed into the request (request or form data). * This method returns get, post, put patch, delete or raw faw form data or NULL * if the data isn't found. * * @param string|array $params The parameter(s) to return * @param bool $safeData Sanitize output */
Hàm này trả về array hoặc string tuỳ theo input đầu vào. Giải pháp là nếu đầu vào là array thì sẽ loop từng item trên array đó.
public function get($params, bool $safeData = true) { if (is_string($params)) return $this->body($safeData)[$params] ?? null; $data = []; foreach ($params as $param) { $data[$param] = $this->body($safeData)[$params] ?? null; } return $data; }
Sẽ có một đoạn lặp đi lặp lại là $data[$param] = $this->body($safeData)[$params] ?? null;. Thay vì lặp foreach kiểu đó, anh em có thể sử dụng đệ quy:
public function get($params, bool $safeData = true) { if (is_string($params)) return $this->body($safeData)[$params] ?? null; $data = []; foreach ($params as $param) { $data[$param] = $this->get($param, $safeData); // I called the function again } return $data; }
7. Tham khảo
Ngoài ra anh em có thể tham khảo thêm một số mẹo PHP khác:
- Top 10 PHP Tips For Developers
- What are the some important PHP tricks for beginners?
- Top 15 Optimization Tips and Tricks
Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!
Tác giả: Kiên Nguyễn
Có thể bạn quan tâm:
- M Mới ra trường không kinh nghiệm, sao làm BA?
- C Chuyển đổi SA key sang Workload Identity
- U Use Case Diagram và 5 sai lầm thường gặp
- K Kinh nghiệm xử lý câu lệnh điều kiện trong JavaScript
- D Dart là gì? Ứng dụng của ngôn ngữ lập trình Dart
- C Chuẩn Hóa CV, Nhận Ngay Phím Chất
- S So sánh MySQL và MongoDB: Nên chọn CSDL nào?
- D Dân BA có cần phải rành về kỹ thuật???
- C CSS Selector là gì? Cách sử dụng các loại CSS Selector phổ biến
- P Phân biệt Sketch, Wireframe, Mockup, và Prototype?