在PHP函数中将类变量作为默认参数

4
我希望我的类中有一个带默认参数的函数,以便在需要时可以省略参数。我想让默认值是存储在我的类中的变量;
嗨,为什么Aptana会显示错误消息?
class property{
    private $id;
    function load_data($id = $this->id){
        //...blah blah blah
    }
}

我应该改用什么?

class property{
    static $id;
    function load_data($id = self::id){
        //...blah blah blah
    }
}

感谢您的帮助。

3个回答

9

我很确定你无法做你要找的事情。相反,你应该检查参数是否有值,如果没有,则将默认值分配给对象属性。

class property{
    private $id;
    function load_data($id = null){
        $id = (is_null($id)) ? $this->id : $id;
    }
}

1
虽然我喜欢三元运算符,但我尽量避免将变量设置为自身。 - Mike Purcell

2
你可以这样做:
class property
{
    private $id;

    function load_data($id = null){

        if (is_null($id)) {
            $id = $this->id;
        }

        //...blah blah blah
    }
}

没那么巧,我在提交之前看到了 AJAX 的提示。;-) - Brad Christie
@JackMahoney:哈哈,讽刺吗?如果您发现我们的答案有用,请接受其中一个。 - Mike Purcell
@MikePurcell 哈哈,只是看起来很有趣。上面的答案已经被接受了,但你的答案也一样好,所以还是谢谢你。 - JackMahoney
@JackMahoney:没问题,重要的是你得到了你的问题的答案。 - Mike Purcell

0

我知道这是一个老问题,但我在搜索同样的东西时遇到了它,答案是肯定的,只要你将其定义为常量:

class property{
    const $id;
    function load_data($id = self::id){
        //...blah blah blah
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接