在 PHP 中省略函数参数

Omitting function arguments in PHP

我有一个功能可以保存每个用户日志,如下所示

<?php
function create_log($action=null, $outcome, $message)
  {
    require 'dbc.php';
    include 'get_ip.php';
    $ip = get_ip_address();
    $dateTime = date('m-d-Y h:i:s A', time());
    $query = "INSERT INTO tbllogs (logOrigin, logAction, logUser, logDate, logOutcome, logMessage) VALUES (:origin, :action, :user, :dt, :outcome, :message)";
    $stmt  = $dbc->prepare($query);
    $stmt->bindParam(':origin', $ip);
    $stmt->bindParam(':action', $action);
    $stmt->bindParam(':user', $_SESSION['id']);
    $stmt->bindParam(':dt', $dateTime);
    $stmt->bindParam(':outcome', $outcome);
    $stmt->bindParam(':message', $message);
    $stmt->execute();
  }

当我调用它时,我是这样做的:

create_log('Log in', 'Failed', ''); 

我的问题是,$message 参数只在我需要的时候使用。我应该一直这样称呼它 create_log('Log in', 'Failed', ''); 还是我可以这样称呼它? create_log('Log in', 'Failed');?如果是,怎么做?

您可以为参数指定default values

function create_log($action = '', $outcome = '', $message = '')

这样,如果您在没有参数之一的情况下调用 create_log,它将被赋予函数定义中的值('' 用于上述示例中的所有参数)。