只是想知道,是否可以重构此代码,以便调用函数$this->getApiAuthenticatedUser()
将直接将$this->userTokenResponse
返回给getUserData()
的调用者。
public function getUserData(Request $request)
{
/*
* No user token is pass or invalid token
*/
if( !$this->getApiAuthenticatedUser() )
{
return $this->userTokenResponse;
}
// Do more stuff
}
或多或少变得像这样
public function getUserData(Request $request)
{
/*
* No user token is pass or invalid token
*/
$this->checkUserToken();
// Do more stuff
}
public function checkUserToken()
{
/*
* No user token is pass or invalid token
*/
if( !$this->getApiAuthenticatedUser() )
{
return $this->userTokenResponse; // Need to return 2 level of function
}
}
答案 0 :(得分:1)
不可能返回“2级功能”,每个函数决定返回的内容而不返回只意味着没有返回值,之后你仍然会回到父函数(如果你仍然会“非”返回值可能是NULL
)。使用if
是正确的方法。因此,条件为TRUE然后返回,否则执行其他操作。
答案 1 :(得分:0)
听起来你更像是在寻找例外:
public function getUserData(Request $request) {
$this->assertUserTokenIsValid();
// Do more stuff
}
public function assertUserTokenIsValid() {
if (!$this->getApiAuthenticatedUser()) {
throw new InvalidUserTokenException;
}
}
答案 2 :(得分:-1)
我不太明白你在追求什么,但可能是这个?
public function getUserData(Request $request)
{
/*
* No user token is pass or invalid token
*/
return $this->checkUserToken();
// Do more stuff
}
public function checkUserToken()
{
/*
* No user token is pass or invalid token
*/
if( !$this->getApiAuthenticatedUser() )
{
return $this->userTokenResponse; // Need to return 2 level of function
}
}