为什么这个转义 HTML 的函数必须有一个初始设置为空字符串的参数 - PHP?

Why Must This Function That Escapes HTML Have A Parameter Initially Set That Is An Empty String - PHP?

我见过一个函数,它通过在函数内部返回 htmlspecialchars() 方法,将输出 HTML 转义到页面上:

 function escape($string="") {
      return htmlspecialchars($string);
 }

教程说总是将参数设置为空字符串:$string = ""

为什么你必须这样做?当然下面的函数也能正常工作?

 function escape($string) {
      return htmlspecialchars($string);
 }

在这两种情况下,您都可以在从数据库中获取 row/record 后调用类似以下内容的函数:

$db_id = escape($row['id']);

我不明白为什么参数一开始必须赋空字符串的值?

安娜

尝试运行下面给出的代码块

函数1:参数可选

<?php 
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
function escape($string="") {
      return htmlspecialchars($string);
 }

echo escape();
?> 

函数 1: 参数不是可选的

<?php 
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
function escape($string) {
      return htmlspecialchars($string);
 }

echo escape();
?> 

第二个函数会抛出错误Fatal error: Uncaught ArgumentCountError: Too few arguments to function escape(), 0 passed in

参考php.net