Bir PHP fonksiyonu basit bir 'geri dönüş' sadece erken işlevini sonlandırmak mı?

5 Cevap php

Ben sadece bu gördük

// Check to see if the request is a HXR call

if (request::is_ajax())

{

  // Send the 403 header

  header('HTTP/1.1 403 Forbidden');

   return;



   }

Ben önce basit bir return görmedim, ve ben hiç kullanmadım. Benim sadece tahminim aslında bir sonuç dönmez dışında sadece, herhangi bir return 'something' (işlevini durdurma) gibi aynı hareket ediyor olmasıdır.

Ayrıca, bu ne durumda olur?

function text($var) 

{

    if ( ! $var) {
        return;
    }
    do_something();

}

$var = text('');

Ben (muhtemelen yanlış dönmek veya bir istisna olmalı) kötü bir örnek olduğunu biliyorum, ama bu bir hata olurdu, ya $var sadece null veya boş olurdu?

5 Cevap

function text($var) 

{

    if ( ! $var) {
        return;
    }
    do_something();

}

$var = text('');

echo gettype($var);
echo is_bool($var) ? "true" : "false";
echo is_string($var) ? "true" : "false";
echo is_null($var) ? "true" : "false";

döner:

NULL false false true

PHP dinamik yazdınız, bu yüzden hiçbir değer döndüren herhangi bir tür bir null değeri geri dönen eşdeğerdir.

Hiçbir değeri ile return null döndürür.

Kılavuzun daha fazla bilgi:

Bir işlevin içinde ise, return () deyimi hemen geçerli işlev sonlandırıp ve işlev çağrısının değer olarak döndürür. return () de eval () deyimi veya komut dosyası yürütme sona erecek.

Küresel alandaki denilen, o anki komut dosyası yürütme sona erdi. Geçerli komut dosyası () ed veya gerektiren () ed, dahil ise o kontrol geri çağıran dosyaya geçirilir. Ayrıca, mevcut komut dosyası ise () ed, daha sonra dönmek için verilen değer () dahil değeri olarak iade edilecektir () çağrısı dahil. Return () ana betik dosyasının içinden çağrıldığı takdirde, betiğin çalışması biter. Geçerli komut dosyası auto_prepend_file veya php.ini içinde auto_append_file yapılandırma seçenekleri ile seçildi, o zaman bu komut dosyasının yürütülmesine sona erdi.

Kısa cevap. Sadece onun çok geri dönüş yok deyimi ile bir fonksiyonu gibi, işlevi biter. Hiçbir işlevi sadece çıkıldı, döndürülür.

İkinci örnekte, $ var olur = şey.

Neden bunu yürütmek ve görmüyor?

Evet, "return;" veya return (); Bir fonksiyonu (kod çalıştırılır ise) o noktada (return ifadesi bir fonksiyonu değilse veya dosya) bu işlevi çalışmasını durdurur ve teknik bir null değeri döndürür.

İlk örnek çıktı olur 'HTTP/1.1 403 Yasak' başlığı ve sonra istek :: is_ajax () true eşitse bu işlevi biter.

Kod örneğinde:

function text($var) 
{

    if ( ! $var) {
        return;
    }
    do_something();

}
$var = text('');

Sen dışarı şu geliyor olabilir:

  • $ Var (yani false, null, metin veya bir tamsayı), daha sonra çıkış işlevi DOĞRU DEĞİLDİR ve boş dönmek.
  • $ Var ($ var ama gerçek bir şey olup olmadığını kontrol deyimi ise) TAM DOĞRU ise, o zaman () do_something koşmak;

Ben muhtemelen eğer deyim ya da değiştirmek istediğiniz şüpheli olacaktır:

if (!is_string($var)) {

Sadece bir dize) (do_something istiyorsanız veya

if (is_null($var)) {

if you only want to do_something() to $var if it's been set. You may also want to change your function declaration to: function text($var==NULL) { so if you call text without a paramter, $var is automatically set to null.