如果用户没有设置默认参数,我正在尝试添加一些默认参数:
public function article($articleId, $userId = 1){
上述工作,但我希望从Auth
替换$ userIdpublic function article($articleId, $userId = Auth::id()){
但我收到错误:
syntax error, unexpected '(', expecting ')'
答案 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;
}