içerik ölmek değil

4 Cevap php

Ben bir değişken tanımlı değilse bu sayfada herhangi bir şey ama boş bir sayfa üretmek olmamalıdır bunun, exit;, denir bir işlevi var. aslında çıkıldı hemen önce bir hata iletisi üretir. böylece zaman onun değişkeni ölmek gerekir, tanımlanmış, ama ne olur bir hata mesajı altında sayfa yük kalanı daha sonra, hata mesajı yürütülür ve çıkış yok değil çünkü, yürütmek gerekiyordu. herhangi bir fikir?

public function exit_error() {
    parent::error_array();
    $errors = $this->msg_array;
    return $errors;
    die(); // error should produce, then die here.
}

4 Cevap

Bu hat ile:

return $errors;

the function exits and returns the result to the caller.
Anything that comes after the return statement is never executed!

Sen işlevini icar olarak return düşünmek söylüyorlar: "Here take this, I am finished here!".


Bu nedenle eğer bir fonksiyon eg multiple return ifadelerinin olması mümkündür:

function($i) {
   if($i > 0) {
       return 'foo';
   }
   $i = -$i;
   return 'bar';
}

Işlevi nokta $i daha büyük ise o 0, deyim return 'foo' ulaşıldığında, fonksiyon exists olduğunu, saçma olduğunu ve never aşağıdaki satırları yürütür.

Bu ile gerekli olmayabilir başka hesaplamaları yapmadan erken bir fonksiyon bırakabilirsiniz.

Kod exit ulaşmadan önce size işlevi dönen konum. Bu return ne olduğunu. Return ifadesinden sonra her şey göz ardı edilir, ve yürütme debi fonksiyonu olarak adlandırılır hangi noktaya döner.

Dönüş ve program akışı hakkında daha fazla okuyun here. Bu temel bir kavram ve hatta basit programlar yazmak için umut eğer önemlidir anlayış.

return kullanarak, temelde fonksiyon dışı çıkılıyor. Herhangi bir sonraki ifadeleri die() dahil, göz ardı edilir.

;) Oh, ve bir tek boynuzlu kaydetmek ve yerine exit() kullanın. (This is a joke, die() eşdeğerdir exit() PHP)

funciton değişkeni dönen $errors ve sonra işlev içinde kod artık yürütülür.

    public function exit_error() {
        parent::error_array();
        $errors = $this->msg_array;
        return $errors;
        echo "hello";
        die();
    }

Fonksiyonu yürütme durdu çünkü Merhaba basılacak asla.