从不同的功能返回

时间:2015-06-11 07:02:13

标签: php

只是想知道,是否可以重构此代码,以便调用函数$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
    }
}

3 个答案:

答案 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
    }
}