【问题标题】:Referring to class variables as default parameters in PHP function在 PHP 函数中引用类变量作为默认参数
【发布时间】:2012-04-27 00:34:42
【问题描述】:

我想在我的类中有一个具有默认参数的函数,以便在需要时可以省略该参数。我希望默认值是存储在我的类中的变量;

嗨,为什么这会在 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
    }
}

?

感谢您的帮助

【问题讨论】:

    标签: php function optional-parameters


    【解决方案1】:

    我很确定你不能做你想要的。相反,您应该简单地检查参数是否有值,如果没有,则分配默认值,即对象属性。

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

    【讨论】:

    • 虽然我喜欢三元,但我尽量避免给自己设置一个变量。
    【解决方案2】:

    你可以这样做:

    class property
    {
        private $id;
    
        function load_data($id = null){
    
            if (is_null($id)) {
                $id = $this->id;
            }
    
            //...blah blah blah
        }
    }
    

    【讨论】:

    • 没那么接近,在我点击提交之前看到了 AJAX 通知。 ;-)
    • @JackMahoney:哈哈,讽刺?如果您发现我们的答案之一可以接受,请接受一个。
    • @MikePurcell 不,这很有趣。上面接受的答案,但你的答案是一样的,所以谢谢
    • @JackMahoney:没问题,重要的是你的问题得到了回答。
    【解决方案3】:

    我知道这是一个老问题,但我在寻找相同类型的东西时想出了这个问题,答案是肯定的,只要你将它定义为常量,你就可以做到:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2020-11-27
      • 2012-02-03
      • 1970-01-01
      • 2016-07-17
      • 2011-06-05
      • 1970-01-01
      相关资源
      最近更新 更多