Как вернуть функцию другой функцией - PullRequest
2 голосов
/ 12 марта 2011

Я намерен создать функцию проверки, которая будет использоваться другими функциями.Идея была проста: если условия не выполняются, остановите функцию, вернув ее.

Это оригинальный код:

function awesome(){ 
    $a = "2";
    if ($a != "1"){return;} 
    echo "awesome"; 
}

Это сработало.Поскольку $ a равнялось 2, функция возвращается, и слово «удивительный» не появляется.Тем не менее, есть несколько функций для проверки.Чтобы избежать повторения, я сделал это следующим образом:

function test($var){
    if ($var != "1"){return;}
}

function awesome(){
    test("2");
    echo "awesome";
}

function awesomeagain(){
    test("3");
    echo "awesome";
}

, но появилось слово "awesome", и обе функции awesome () и awesomeagain () не возвращаются.Как вернуть эти два, добавив функцию test ()?

Спасибо.Я очень ценю вашу помощь.

Ответы [ 5 ]

2 голосов
/ 12 марта 2011

Ваша функция test должна вернуть значение, и вы должны проверить это значение в других функциях. Как то так:

function test($var) {
  if ($var != "1")
    return false;
  else
    return true;
}

Итак, ваш код должен быть таким:

function awesome() {
  if (test("2"))
    echo "awesome";
}

Но, если вы хотите жадные проверки, вы можете выбросить исключение. Это должно выглядеть так:

function test($var) {
  if ($var != "1")
    throw new Exception();
}

и в других функциях используйте

function awesome() {
  try {
    test("2");
    echo "yeah";
  } catch ($e) {}      
}
1 голос
/ 12 марта 2011
function test( $var ) {
    return ( $var == "1" );
}

function awesome() {
    if ( test("2") ) {
        echo "awesome";
    }
}

function awesomeagain(){
    if ( test("3") ) {
        echo "awesome";
    }
}

Фикри, попробуйте заново изучить концепцию conditional, это базовый навык программирования.Без этого вы создадите много глючного кода и функций.

1 голос
/ 12 марта 2011

fВы, вероятно, не должны полагаться на то, что другая функция остановит выполнение другой функции.Попробуйте вместо этого

function test($var){
    if ($var != "1"){return false;} return true;
}

function awesome(){
    if(test("2"))
    echo "awesome";
}

function awesomeagain(){
    if(test("3"));
    echo "awesome";
}
1 голос
/ 12 марта 2011

, чтобы вернуться из функции, которую вы должны использовать return ключевое слово

function test($var){
    if ($var == "1"){
        return TRUE;
    }
}

function awesome(){
    if (!test("2")){
        return FALSE;
    }
    echo "awesome";
    return TRUE;
}
0 голосов
/ 12 марта 2011
function test($var) {
    if ($var != "1"){
        return "awesome";
    }
    // do something else when $var is not "1" here.
}
function awesome(){
    echo test("2");
}
function awesomeagain(){
    echo test("3");
}

Вот и все!PHP потрясающий!:)

...