首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php函数中作为参数的Superglobals

php函数中作为参数的Superglobals
EN

Stack Overflow用户
提问于 2018-02-20 16:36:08
回答 1查看 114关注 0票数 0

我发现自己需要为来自超全局的一些方法参数设置一个默认值,例如:

代码语言:javascript
复制
public function some_function ($foo = $_POST['foo'], $bar = $_POST['bar']){
    //some action
}

这把我扔了

解析错误:语法错误,意外的'$_POST‘(T_VARIABLE)在线/script.php (行数匹配方法定义)

如果它喜欢:

代码语言:javascript
复制
public function some_function ($foo = "{$_POST['foo']}", $bar = "{$_POST['bar']}")

解析器抛出:

代码语言:javascript
复制
Parse error: syntax error, unexpected '"' 

是否有方法从PHP超级全局设置默认方法参数值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-20 16:41:03

参数默认值必须是常量表达式,因此您可以这样做:

代码语言:javascript
复制
public function some_function ($foo = null, $bar = null)
{
    if ($foo === null) {
        $foo = $_POST['foo'];
    }
    if ($bar === null) {
        $bar = $_POST['bar'];
    }
}

如果您想变得更漂亮,可以确保默认设置为默认值:

代码语言:javascript
复制
public function some_function ($foo = null, $bar = null)
{
    if ($foo === null) {
        $foo = $_POST['foo'] ?? 'default foo';
    }
    if ($bar === null) {
        $bar = $_POST['bar'] ?? 'default bar';
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48889998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档