php从不同的函数调用“返回”

时间:2013-06-22 01:12:25

标签: php

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()”这样的函数并且有如果需要,函数调用return,否则继续使用函数。

只是想知道是否可以这样做。

5 个答案:

答案 0 :(得分:3)

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

但是,您可以抛出异常check out the manual。这样你就可以让被调用的方法影响被调用者中的流控制 - 尽量不要过度使用它们来执行此操作,因为代码可能会因为太多而变得非常难看。

以下是如何使用例外进行验证的示例:

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";
    }
}

答案 1 :(得分:2)

不,不是。你必须检查b()返回什么,如果是真的话,从()返回。

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";
    }
}

答案 2 :(得分:1)

你所尝试的是不可能的。查看return

的手册

答案 3 :(得分:0)

模板差距。

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

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

答案 4 :(得分:0)

如果您希望a()b(1)返回true,那么您可以使用return a();