PHP chuyển biến cho hàm gọi lại

Tóm lại,

add_action[
    'save_post', // Hook name
    'log_when_saved', // Callable.
    10, // Priority
    3 // How many arguments the callable can accept.
];
1 và
add_action[
    'save_post', // Hook name
    'log_when_saved', // Callable.
    10, // Priority
    3 // How many arguments the callable can accept.
];
2 chỉ đang gọi hàm PHP cốt lõi là
function add_numbers[ $one, $two ] {
    return $one + $two;
}
0. Khi bạn chạy
function add_numbers[ $one, $two ] {
    return $one + $two;
}
1, bạn đang lưu trữ một tham chiếu đến một hàm có thể gọi được, với một số biểu thị số lượng đối số mà hàm đó chấp nhận

add_action[
    'save_post', // Hook name
    'log_when_saved', // Callable.
    10, // Priority
    3 // How many arguments the callable can accept.
];

Vì vậy, khi bạn gọi

add_action[
    'save_post', // Hook name
    'log_when_saved', // Callable.
    10, // Priority
    3 // How many arguments the callable can accept.
];
1, WordPress sử dụng
function add_numbers[ $one, $two ] {
    return $one + $two;
}
0 với khả năng gọi đó, cùng với một mảng bất kỳ đối số nào được chuyển đến
add_action[
    'save_post', // Hook name
    'log_when_saved', // Callable.
    10, // Priority
    3 // How many arguments the callable can accept.
];
1

Để tránh một số lỗi nhất định và để cho phép các nhà phát triển sử dụng các hàm chấp nhận ít đối số hơn so với hàm được truyền cho

add_action[
    'save_post', // Hook name
    'log_when_saved', // Callable.
    10, // Priority
    3 // How many arguments the callable can accept.
];
1, WordPress sẽ cắt bớt mảng được truyền cho
function add_numbers[ $one, $two ] {
    return $one + $two;
}
0 để khớp với số lượng đối số được chấp nhận trong lệnh gọi
function add_numbers[ $one, $two ] {
    return $one + $two;
}
1. Nếu nó không làm điều này thì bạn sẽ gặp lỗi nghiêm trọng nếu hàm của bạn không chấp nhận tất cả các biến

Vì vậy, các biến mà bạn có thể sử dụng trong chức năng gọi lại của mình được xác định bởi

  1. Đối số nào đã được chuyển đến
    add_action[
        'save_post', // Hook name
        'log_when_saved', // Callable.
        10, // Priority
        3 // How many arguments the callable can accept.
    ];
    
    1
  2. Bạn đã chọn chấp nhận bao nhiêu biến khi chạy
    function add_numbers[ $one, $two ] {
        return $one + $two;
    }
    
    1

Tên của các biến không quan trọng, nhưng thứ tự thì có. Đây là cách tất cả các hàm PHP hoạt động. Nếu tôi viết chức năng này

function add_numbers[ $one, $two ] {
    return $one + $two;
}

Đối số đầu tiên được truyền cho hàm sẽ có tên biến là

$a = 1;
$b = 3;
$c = add_numbers[ $a, $b ]; // Works fine.
$d = add_numbers[ 2, 4 ]; // Even if I don't pass named variables.
0 bên trong hàm đó và đối số thứ hai sẽ có tên là
$a = 1;
$b = 3;
$c = add_numbers[ $a, $b ]; // Works fine.
$d = add_numbers[ 2, 4 ]; // Even if I don't pass named variables.
1. Tên biến được sử dụng bên ngoài chức năng không quan trọng

________số 8

Điều này cũng đúng với móc. Các tham số được truyền cho

add_action[
    'save_post', // Hook name
    'log_when_saved', // Callable.
    10, // Priority
    3 // How many arguments the callable can accept.
];
1 được truyền dưới dạng đối số cho
function add_numbers[ $one, $two ] {
    return $one + $two;
}
0 theo thứ tự. Vì vậy, nếu tôi móc như thế này

function add_numbers[ $one, $two ] {
    return $one + $two;
}
2

Sau đó, điều này hoạt động

function add_numbers[ $one, $two ] {
    return $one + $two;
}
3

Và điều này cũng vậy

function add_numbers[ $one, $two ] {
    return $one + $two;
}
4

Nhưng bất kể tên là gì,

$a = 1;
$b = 3;
$c = add_numbers[ $a, $b ]; // Works fine.
$d = add_numbers[ 2, 4 ]; // Even if I don't pass named variables.
4 sẽ luôn là ID bài đăng được chuyển đến
add_action[
    'save_post', // Hook name
    'log_when_saved', // Callable.
    10, // Priority
    3 // How many arguments the callable can accept.
];
1 vì đó là đối số đầu tiên. Vì vậy, trong ví dụ này,
$a = 1;
$b = 3;
$c = add_numbers[ $a, $b ]; // Works fine.
$d = add_numbers[ 2, 4 ]; // Even if I don't pass named variables.
6 là ID bài đăng

function add_numbers[ $one, $two ] {
    return $one + $two;
}
7

Đó là lý do tại sao nên khớp tên biến với tên được truyền. Không phải vì bất kỳ lý do kỹ thuật nào, mà để dễ hiểu hơn

Điều này sẽ không làm việc

function add_numbers[ $one, $two ] {
    return $one + $two;
}
8

Bởi vì

$a = 1;
$b = 3;
$c = add_numbers[ $a, $b ]; // Works fine.
$d = add_numbers[ 2, 4 ]; // Even if I don't pass named variables.
7 là không xác định. Nếu bạn muốn sử dụng ID của bài đăng đang được lưu, bạn cần sử dụng ID được chuyển làm đối số đầu tiên

Tất cả điều này đặt ra câu hỏi làm thế nào để biết bạn có thể hoặc cần chấp nhận biến nào trong các cuộc gọi lại hook của mình. Đó là nơi tài liệu đến. Nếu bạn xem tài liệu về

$a = 1;
$b = 3;
$c = add_numbers[ $a, $b ]; // Works fine.
$d = add_numbers[ 2, 4 ]; // Even if I don't pass named variables.
8, bạn sẽ thấy đối số nào được truyền cho hàm gọi lại, vì vậy bạn biết đối số nào đại diện cho loại giá trị nào

Các hàm gọi lại được gọi bởi PHP bất cứ khi nào một sự kiện nào đó xảy ra. Ví dụ: khi phân tích cú pháp XML, PHP có thể gọi một hàm mỗi khi nó chạm vào thẻ và bạn có thể xác định hàm người dùng của riêng mình cho mục đích được PHP gọi, sau đó chuyển tên của hàm cho PHP. Các hàm gọi lại luôn có các yêu cầu nghiêm ngặt về số lượng tham số mà chúng có thể nhận, vì PHP thường muốn chuyển các biến cho hàm gọi lại của bạn để bạn sử dụng

Chúng tôi sẽ đề cập đến các trường hợp riêng lẻ của hàm gọi lại theo yêu cầu trong suốt cuốn sách này - bây giờ điều cần thiết đơn giản là bạn hiểu chúng là gì

Bạn muốn học PHP 7?

Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay

Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó

Làm cách nào để chuyển hàm gọi lại trong PHP?

Gọi lại đơn giản . Ví dụ.

Chủ Đề