Tham số tùy chọn không dùng PHP

không dùng nữa. Tham số bắt buộc $x theo sau tham số tùy chọn $y Lỗi trong PHP 8. 1

 Ngày 28 tháng 8 năm 2022 Santosh Lỗi PHP Không có nhận xét

Sau khi nâng cấp máy chủ của chúng tôi lên PHP 8. 1, chúng tôi đã nhận được cảnh báo là

Deprecated: Required parameter $x follows optional parameter $y

Đây là mã có lỗi này

public function function_name ($y='', $x) {
function code....
}

Để khắc phục điều này, chúng tôi đã thay đổi đoạn mã trên thành

public function function_name ($y, $x) {
        $y=$y ?? '';
}

Đó là nó

Chúng tôi đã gặp lỗi tương tự ở một trong các hàm tạo

public function __construct($x, $y = 12, $z = '', $k){
function code....
}

Để khắc phục điều này chúng ta chỉ cần đặt biến z ở cuối các biến như sau

public function __construct($x, $y = 12, $k, $z = ''){ 
function code... 
}

Đó là nó

Hi vọng điêu nay co ich

Vấn đề/Động lực

------ --------------------------------------------
Dòng src/mô-đun/contrib/webform/gồm/webform. bài báo cáo. tập đoàn
------ --------------------------------------------
1194 Không dùng nữa trong PHP 8. 0. Tham số bắt buộc $context theo sau tham số tùy chọn $options
1209 Không dùng nữa trong PHP 8. 0. Tham số bắt buộc $context theo sau tham số tùy chọn $options
1236 Không dùng nữa trong PHP 8. 0. Tham số bắt buộc $context theo sau tham số tùy chọn $options
1280 không dùng nữa trong PHP 8. 0. Tham số bắt buộc $context theo sau tham số tùy chọn $options
1300 không dùng nữa trong PHP 8. 0. Tham số bắt buộc $context theo sau tham số tùy chọn $options
------ --------------------------------------------

nghị quyết đề xuất

Vì vậy, chúng ta cần thêm kiểm tra tham số $format và $options để tránh lỗi sau có thể xuất hiện sau $options
------ --------------------------------------------
không dùng nữa. Tham số bắt buộc $context theo sau tham số tùy chọn $format
------ --------------------------------------------

function webform_results_batch_bof($node, $format, $options, &$context) {
  if (empty($format)){
    $format = 'delimited';
  }
  if (is_array($options)) {
    $options = array();
  }
  ...
}

PHP cho phép xác định các tham số tùy chọn trong chữ ký hàm và phương thức. Các tham số này có giá trị mặc định có thể được chỉ định bằng cách sử dụng dấu bằng (=). Nếu không có đối số nào được chuyển đến tham số tùy chọn khi giá trị mặc định sẽ được sử dụng

Kể từ PHP 8. 0, chỉ định tham số bắt buộc sau khi tham số tùy chọn không được dùng nữa. Điều đó có nghĩa là chữ ký hàm sau không được dùng nữa và PHP đưa ra cảnh báo không dùng nữa

Ví dụ sẽ xuất ra

Deprecated: Required parameter $y follows optional parameter $x in main.php on line 3

Để xác định tham số bắt buộc sau tham số tùy chọn không có ý nghĩa vì chúng ta cần truyền đối số cho tham số tùy chọn để truyền đối số cho tham số bắt buộc

Trong ví dụ trước, cảnh báo không dùng nữa có thể được giải quyết bằng cách xóa giá trị mặc định

________số 8_______

Tuy nhiên, cảnh báo không dùng nữa sẽ không được phát ra nếu chúng ta xác định tham số tùy chọn có khai báo kiểu và giá trị mặc định là null. Đoạn mã sau sẽ không phát ra cảnh báo không dùng nữa vì chúng tôi đã chỉ định int làm loại và null làm giá trị mặc định

Kể từ PHP 7. 1, chúng ta có thể sử dụng các loại nullable, vì vậy nên sử dụng chúng. Ví dụ trước có thể viết lại như sau

Lưu ý rằng, PHP đưa ra cảnh báo không dùng nữa nếu chúng ta xác định tham số tùy chọn với giá trị mặc định được đặt thành null nhưng khai báo kiểu không được chỉ định

Trong PHP 8, các tham số được đặt tên đã được thêm vào. Điều này có nghĩa là từ bây giờ, các tham số không có giá trị mặc định, được yêu cầu TRƯỚC các tham số tùy chọn

Tham số tùy chọn là tham số có giá trị mặc định. function example(string $optional = '');. Chúng tôi gọi chúng là tùy chọn, bởi vì chúng là tùy chọn, vì bạn có thể gọi hàm như sau. example();

Do đó, nguyên mẫu của bạn nên thay đổi từ

public function send(string $to_name = '', string $to_addr, string $from_name, string $from_addr, string $subject = '', bool $reply_to = false): bool

đến

public function send(string $to_addr, string $from_name, string $from_addr, string $to_name = '', string $subject = '', bool $reply_to = false): bool

Bạn có thể đọc thêm về nó ở đây. https. //www. php. net/thủ công/vi/chức năng. tranh luận. php