Hướng dẫn dùng addition php trong PHP

Mảng là một kiểu dữ liệu vô cùng quan trọng trong Php, nó giúp chúng ta lưu nhiều nhiều giá trị đồng thời. Trong bài học này tôi hướng dẫn bạn từng bước nhưng thao tác quan trọng về mảng như thêm, sửa, xóa, cập nhật phần tử trong mảng.

Tạo một mảng trong Php

Nếu bạn muốn tạo một mảng rỗng, không có giá trị ban đầu bạn sử dụng cú pháp

$my_array = array();

Ngược lại, nếu mảng có giá trị ban đầu bạn tạo như bên dưới

$my_array = array('A', 'B', 'C' );

Thêm phần tử vào mảng

#1. Thêm phần tử vào cuối mảng

<?php
$list_odd = array(1,3,5,7);
// Thêm phần tử giá trị 9 vào mảng có chỉ số key là số nguyên cao nhất.
$list_odd[] = 9;
?>

Chú ý: Khi thực hiện cấu trúc dấu ngoặc vuông rỗng [] để thêm phần từ thì phần tử được  thêm vào mảng có chỉ số lớn nhất cộng thêm một giá trị.

#2. Thêm phần tử qua một key cố định

Mảng $profile để lưu thông tin của thành viên bao gồm họ tên(fullname), thành phố đang ở(city), giới tính(gender).

Sau đó tiến hành thêm thông tin ngày sinh(birth) vào mảng

<?php
$profile = array(
    'fullname' => 'Phan Văn Cương',
    'city' => 'Quảng Trị',
    'gender' => male,
);
// Thêm phần tử có key xác định vào mảng $student
$profile['birth']= "10/11/1988";
?>

Cập nhật giá trị của mảng

Để cập nhật giá trị của mảng chúng ta cần xác định được key của nó và tiến hành thiết lập lại giá trị như hướng dẫn bên dưới.

Chú ý: Nếu mảng không có key có định thì key nhận giá trị mặc định tăng dần từ 0.

<?php
$list_color = array('Green', 'Red', 'Blue');
// Cập nhật giá trị Green bằng Back
$list_color[0] = Black;
?>
<?php
$profile = array(
    'fullname' => 'Phan Văn Cương',
    'city' => 'Quảng Trị',
    'gender' => male,
);
// Cập nhật  city Quảng Trị thành Hà Nội
$profile['city']= "Hà Nội";
?>

Xóa phần tử mảng

Để xóa phần tử trong mảng bạn sử dụng hàm unset() và hủy đúng phần tử cần xóa.

Ví dụ: Hủy phần tử giới tính(gender) trong mảng $profile

<?php
$profile = array(
    'fullname' => 'Phan Văn Cương',
    'city' => 'Quảng Trị',
    'gender' => male,
);
// Hủy phần tử gender
unset($profile['gender']);
?>

Nếu bạn muốn xóa tất cả các phần tử trong mảng bạn làm như sau

<?php
$profile = array(
    'fullname' => 'Phan Văn Cương',
    'city' => 'Quảng Trị',
    'gender' => male,
);
// Hủy mảng $profile
unset($profile);
?>

Kết luận: Vậy là thông qua bài hướng dẫn này tôi đã hướng dẫn bạn những thao tác quan trọng trong mảng. Việc của bạn bây giờ cần thực hành lại để nắm chắc bài học.

Refactor đề cập đến các kỹ thuật và các bước giúp bạn viết code sạch. Điều này rất quan trọng đối với những người cùng dự án, để họ có thể đọc, mở rộng và sử dụng lại code đó mà không cần phải chỉnh sửa nhiều. Tiếp theo mĩnh sẽ demo một số ví dụ về refactor và làm cho nó tốt hơn.

Đừng bao giờ refactor lại code trên production nếu không có unit tests.

Lời khuyên đầu tiên của mình là đừng bao giờ refactor nếu không có unit tests cho function đó. Lý do rất rõ ràng: những function dính bug sẽ rất khó để fix vì ta sẽ không thể biết bug đó sai ở đâu. Do đó, nếu bạn cần refactor lại nó, hãy viết unit tests trước. Phải chắc rằng phần ta refactor đã được cover hết bởi unit tests.

Bắt đầu refactor từ phần sâu nhất của code của bạn.

Đoạn code dưới đây nằm trong một dự án thực tế cho một hệ thống quản trị khách sạn mà mình tìm thấy trên Github.

Hướng dẫn dùng addition php trong PHP
Ở function trên, có ba cấp được đánh dấu màu đỏ. Phần sâu nhất là khối if/else lồng trong câu điều kiện if đầu tiên. Thông thường, phần này nên tập trung vào một logic duy nhất giúp ta dễ dàng refactor hơn.

Làm cho các methods ngắn hơn bằng cách chia chúng thành một method nhỏ hơn.

Đối với đoạn code trên, ta có thể đưa ra thành một method riêng như sau:

Hướng dẫn dùng addition php trong PHP

Tiếp theo là lấy data bài post và đưa ra views. Bây giờ, function add () đã có thể dễ đọc hơn, fix bug dễ hơn sau khi các function khác đã được refactor.

Hướng dẫn dùng addition php trong PHP

Luôn sử dụng {} trong if-statements.

Hầu hết các ngôn ngữ lập trình đều hỗ trợ một câu lệnh if đầy đủ nhưng khi chúng ta code lại hay dùng những câu lệnh if ngắn vì nó đơn giản, tuy nhiên, nó có thể sinh ra bug vì một dòng trống có thể phá vỡ cấu trúc điều kiện. Xem sự khác biệt giữa hai ví dụ:

// NOT GOOD
public function checkLogin()
{
    if (!UID)
        redirect('login');
}

// VERY GOOD
public function checkLogin()
{
    if (!UID) {
        redirect('login');
    }
}

Không sử dụng magic numbers hoặc magic strings.

Trong ví dụ tiếp theo, if ($rooms > 250), nó sẽ trả về một thông báo lỗi. Trong trường hợp này, 250 được coi là một magic number. Nếu bạn không phải là người viết ra đoạn code này, bạn sẽ rất khó để fix nó nếu nó theo một logic phức tạp nào đó.

public function availableRooms($rooms)
{
    if ($rooms > 250) {
        return 'No rooms available';
    } else {
        return true;
    }
}

Để refactor, chúng ta có thể gán biến $maxAvailableRooms = 250. Bây giờ, nó dễ hiểu hơn đối với những người sẽ maintain sau này.

public function availableRooms($rooms)
{
    $maxAvailableRooms = 250;
    
    if ($rooms > $maxAvailableRooms) {
        return 'No rooms available';
    } else {
        return true;
    }
}

Không sử dụng else-statements nếu nó không quá cần thiết.

Trong câu lệnh if của function availablerooms (), chúng ta có thể không cần dùng else nhưng logic vẫn sẽ giống nhau.