如何将方法的默认参数设置为类成员

时间:2011-02-10 17:28:59

标签: php oop class class-design

我在php类中有这个:

$this->ID = $user_id;

public function getUserFiles($id = $this->ID) { } // error here

但显然我不允许以这种方式使用财产。那么我该如何宣布方法参数的默认值应该是ID属性的值?

必须有一个比这更好的方法:

$this->ID = $user_id;

public function getUserFiles($id = '') {
    $id = ($id == '') ? $this->ID : $id;
}

2 个答案:

答案 0 :(得分:10)

在这种情况下我通常使用null:

public function getUserFiles($id = null)
{
    if ($id === null) {
        $id = $this->id;
    }
    // ...
}

答案 1 :(得分:0)

假设(出于某种原因和设计),在方法中,在参数默认情况下,我们只想使用一个属性,而不是像Alex那样做:

public function methodABC($param = NULL) {
    if ( $param === NULL ) {
        $param = $this->attributeUVW;
    }
    ...$param...
    }

...这是要使用的完整代码(我的2美分):

<?php

    class MyClass
    {
    public $attributeUVW;
    function __construct() {
            $this->attributeUVW = 1234;
        }
    public function methodABC($param = NULL) {
        if ( $param === NULL ) {
            $param = $this->attributeUVW;
        }
        echo '<p>"'.$param.'"</p>'."\n";
        }
    }

    echo '<html>'."\n";
    echo '<body>'."\n";
    echo '<h1>class X</h1>'."\n";

    $x = new MyClass;
    $x->methodABC();
    $x->methodABC(5678);

    echo '</body>'."\n";
    echo '</html>'."\n";

?>

...打印:

<html>
<body>
<h1>class X</h1>
<p>"1234"</p>
<p>"5678"</p>
</body>
</html>