在函数中使用常量作为参数时出错

时间:2015-08-21 06:40:54

标签: php

这里是php代码

define('SITE_NAME','example');
define('SITE_EMAIL_ID','abc@exampl.com');

function sendmail($to, $subject="Mail from ".SITE_NAME, $message=null, $from=SITE_EMAIL_ID, $bcc=null, $cc=null)
    {
    .....
    }

显示错误 解析错误:语法错误,意外'。',期待')'在第4行的functions.php中

4 个答案:

答案 0 :(得分:0)

define('SITE_NAME','example');
define('SITE_EMAIL_ID','abc@exampl.com');

$subject="Mail from ".SITE_NAME;
function sendmail($to, $subject , $message=null, $from=SITE_EMAIL_ID, $bcc=null, $cc=null)
    {
    //
    }

答案 1 :(得分:0)

改变
function sendmail($to, $subject="Mail from ".SITE_NAME, $message=null, $from=SITE_EMAIL_ID, $bcc=null, $cc=null)

function sendmail($to, $subject="Mail from {SITE_NAME}", $message=null, $from=SITE_EMAIL_ID, $bcc=null, $cc=null)
  

或者

您可以在function之前将常量值赋值给变量

$subject="Mail from ".SITE_NAME;

然后从

改变
function sendmail($to, $subject="Mail from ".SITE_NAME, $message=null, $from=SITE_EMAIL_ID, $bcc=null, $cc=null)

function sendmail($to, $subject , $message=null, $from=SITE_EMAIL_ID, $bcc=null, $cc=null)

答案 2 :(得分:0)

请阅读此链接

http://php.net/manual/en/functions.arguments.php

但是,从PHP 5.6.0开始包含此功能。有关详细信息,请参阅此页面:http://php.net/migration56.new-features#migration56.new-features.const-scalar-exprs

“默认值必须是常量表达式”具有误导性(甚至是错误的)。 PHP 5.4.4无法解析此函数定义:

function htmlspecialchars_latin1($s, $flags = ENT_COMPAT | ENT_HTML401) {}

这产生了

  

PHP Parse错误:语法错误,意外'|',期待')'

虽然ENT_COMPAT|ENT_HTML401肯定是编译器仿射人称之为constant expression的。{/ p>

明显的解决方法是使用一个特殊值($ flags = NULL)作为默认值,并将其设置为函数体内所需的值

if ($flags === NULL) { $flags = ENT_COMPAT | ENT_HTML401; })

答案 3 :(得分:-1)

你做不到。 PHP不允许变量名作为函数的默认值。