4
function a(){
    b(1); // Returns true
    b(0); // Echoes "Just some output"
}

function b($i_feel_like_it){
    if($i_feel_like_it){
        return return true;
    }else{
        echo "Just some output";
    }
}

是否可以从不同的函数中调用“返回”函数?

这样做的目的是我有一个有很多函数的类..而不是编写一堆代码来确定它们是否应该返回一些值,我想简单地放置一个像“validate()”这样的函数并调用函数必要时返回,否则继续执行该函数。

只是想知道是否有可能做到这一点。

4

5 回答 5

3

简而言之,。感谢天哪,允许这样做会使它成为一种非常奇怪的语言,您可能不会依赖任何函数的返回。

不过,您可以抛出异常,请查看手册。这样你就可以让被调用的方法影响被调用者的流控制——不过,尽量不要过度使用它们,因为太多的代码会变得非常丑陋。

下面是一个关于如何使用异常进行验证的示例:

class ValidationException extends Exception { }

function checkNotEmpty($input) {
    if (empty($input)){
        throw new ValidationException('Input is empty');
    }
    return $input;
}

function checkNumeric($input) {
    if (!is_numeric($input)) {
        throw new ValidationException('Input is not numeric');
    }
    return $input;
}

function doStuff() {
    try {
        checkNotEmpty($someInput);
        checkNumeric($otherInput);
        // do stuff with $someInput and $otherInput
    } catch (ValidationException $e) {
        // deal with validation error here
        echo "Validation error: " . $e->getMessage() . "\n";
    }
}
于 2013-06-22T01:17:30.643 回答
2

不它不是。您必须检查 b() 返回的内容,如果为真则从 a() 返回。

function a() {
    if (b(1) === true)
        return true; // Makes a() return true
    if (b(0) === true)
        return true; // Makes a() echo "Just some output"
}

function b($i_feel_like_it) {
    if ($i_feel_like_it){
        return true;
    } else {
        echo "Just some output";
    }
}
于 2013-06-22T01:17:05.830 回答
1

你正在尝试的事情是不可能的。检查手册return

于 2013-06-22T01:16:58.597 回答
0

模板间隙。

function a()
{
 b();
 return $a;
}
function b()
{
 c();
 return $b;
}

麻烦就在你的脑海里...

于 2013-06-22T01:17:36.020 回答
0

如果你想a()从 true 返回b(1)true 那么你可以使用return a();

于 2013-06-22T01:19:10.027 回答