方法中的默认参数?

时间:2014-08-14 16:02:49

标签: php laravel laravel-4

如果用户没有设置默认参数,我正在尝试添加一些默认参数:

public function article($articleId, $userId = 1){

上述工作,但我希望从Auth

替换$ userId
public function article($articleId, $userId = Auth::id()){

但我收到错误:

syntax error, unexpected '(', expecting ')'

4 个答案:

答案 0 :(得分:4)

您无法将函数或方法调用用作函数参数的默认值。

这应该可行:

public function article($articleId, $userId = NULL){
    if(!is_numeric($userId) || empty($userId)) $userId = Auth:id();
    //OTHER THINGS HERE
}

答案 1 :(得分:3)

你需要这样做:

public function article($articleId, $userId = null){
    if(!is_int($userId)){
        $userId = Auth::id();
    }
}

如果它不必是整数:

public function article($articleId, $userId = null){
    if(is_null($userId)){
        $userId = Auth::id();
    }
}

答案 2 :(得分:0)

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

  

默认值必须是常量表达式,而不是(例如)a   变量,类成员或函数调用

因此,您必须在方法的实现中设置默认值

答案 3 :(得分:0)

我认为你不能这样做。

我猜你应该在你的类中包含一个名为$ user的公共var(MyClass);

public $user;

然后:

    $c = new MyClass();
    $c->user = $myUser;
    $c->article($article->id);

在此之后,你的方法将是这样的:

    public function article($articleId){
        $userId = $this->user->id;
    }