在 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
,它将被赋予函数定义中的值(''
用于上述示例中的所有参数)。
我有一个功能可以保存每个用户日志,如下所示
<?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
,它将被赋予函数定义中的值(''
用于上述示例中的所有参数)。