PHP Named Arguments Giới thiệu các đối số được đặt tên

PHP Named Arguments Giới thiệu các đối số được đặt tên

PHP Named Arguments trong bài hướng dẫn này, bạn sẽ tìm hiểu về các đối số được đặt tên trong PHP và cách sử dụng chúng một cách hiệu quả trong mã code của bạn.

Giới thiệu về các đối số (Named Arguments) được đặt tên trong PHP

Kể từ PHP 8.0, bạn có thể sử dụng các đối số được đặt tên cho các hàm. Các đối số được đặt tên cho phép bạn truyền đối số vào một hàm dựa trên tên của tham số thay vì vị trí của tham số.

Ví dụ dưới đây định nghĩa một hàm tìm vị trí xuất hiện đầu tiên của một chuỗi con trong chuỗi:

<?php

function find($needle, $haystack)
{
    return strpos($haystack, $needle);
}    

Để gọi hàm find(), bạn truyền các đối số dựa trên vị trí của tham số như sau:

find('awesome', 'PHP is awesome!');

Trong trường hợp này, $needle'awesome'$haystack'PHP is awesome!'.

Tuy nhiên, cuộc gọi hàm không rõ ràng. Ví dụ, bạn không biết đối số nào là needle và đối số nào là haystack.

Đôi khi, bạn có thể vô tình mắc lỗi bằng cách truyền các đối số theo thứ tự sai. Ví dụ:

find ( 
    'PHP is awesome!',
    'awesome'
);

Điều này gây ra lỗi và rất khó khăn khi sửa lỗi.

Để tránh điều này, bạn có thể thêm comment cho các đối số như sau:

find (
    'awesome',        // needle
    'PHP is awesome!' // haystack
);

Bình luận giúp mã code trở nên rõ ràng hơn. Tuy nhiên, điều này không mạnh mẽ.

Để cải thiện điều này, PHP 8.0 giới thiệu các đối số được đặt tên cho phép bạn chỉ định tên của tham số khi truyền đối số:

find (
    $needle : 'awesome',
    $haystack : 'PHP is awesome!'
);

Do bạn đang sử dụng các tên tham số, vị trí không cần thiết. Ví dụ, bạn có thể đổi chỗ các tham số như sau:

find(
    $haystack :'PHP is awesome!',
    $needle : 'awesome'
);

Nó nên hoạt động đúng.

Bỏ qua các đối số mặc định

Đoạn code dưới đây định nghĩa một hàm tạo thành phần một liên kết (<a>) từ văn bản, href, title và target:

<?php

function create_anchor(
    $text,
    $href = '#',
    $title = '',
    $target = '_self'
)
{
    $href = $href ? sprintf('href="%s"', $href) : '';
    $title = $title ? sprintf('title="%s"', $title) : '';
    $target = $target ? sprintf('target="%s"', $target) : '';

    return "<a $href $title $target>$text</a>";
}

Để tạo một liên kết với target là _blank, bạn phải chỉ định tất cả các đối số mặc định cho đến đối số bạn muốn thay đổi. Ví dụ:

$link = create_anchor(
    'PHP Tutorial', 
    'https://www.thanhne.com/',
    '',
    '_blank'
);

echo $link;

Output:

<a href="https://www.thanhne.com/"  target="_blank">PHP Tutorial</a>

Trong ví dụ này, bạn cần truyền dấu cách (”) cho đối số thứ ba. Nếu bạn sử dụng các đối số được đặt tên, bạn không cần phải chỉ định tất cả các giá trị mặc định. Ví dụ:

 $link = create_anchor(
    text : 'PHP Tutorial', 
    href : 'https://www.thanhne.com/',
    target: '_blank'
);

Kết hợp đối số được đặt tên với đối số theo vị trí

PHP cho phép bạn gọi một hàm bằng cách sử dụng cả đối số theo vị trí và đối số được đặt tên. Và bạn cần đặt các đối số được đặt tên sau các đối số theo vị trí. Ví dụ:

$link = create_anchor(
    'PHP Tutorial', 
    'https://www.thanhne.com/',
     target: '_blank'
);

Trong ví dụ này:

  • text'PHP Tutorial'.
  • href'https://www.thanhne.com/'.
  • target'_blank'.

Nếu bạn đặt các đối số được đặt tên trước các đối số theo vị trí, bạn sẽ nhận được một lỗi. Ví dụ:

create_anchor(
    target : '_blank',
    'PHP Tutorial', 
    'https://www.thanhne.com/'
);

Lỗi:

Không thể sử dụng đối số theo vị trí sau đối số được đặt tên

Tóm tắt

  • Sử dụng đối số được đặt tên trong PHP để truyền đối số vào một hàm dựa trên tên của tham số.
  • Đặt các đối số được đặt tên sau các đối số theo vị trí trong cuộc gọi hàm.

Thành Nguyễn

Tôi là Thành, nên tôi đặt tên blog là Thành Nè, Thánh Né... là một coder cùi bắp (Code quèn). Chẳng giỏi viết lách, chỉ giỏi chém gió và có sở thích chia sẻ những kiến thức tôi đã từng...