Bir PHP fonksiyonu denir ve bir şey DÖNDÜ olduğunda, bunun aşağıdaki kod çalıştıran duruyor?

4 Cevap

Ben sadece daha iyi anlamak ve öğrenmek için hemen diğer kullanıcının PHP kodu okuyorum. Aşağıdaki kodda, bir kullanıcı sınıfının bir parçasıdır. Ben bu gibi onları biçimlendirmek if / else bloklarını kullanarak kod zaman ...

if(!$this->isLoggedIn()){
    //do stuff
}

Ancak aşağıdaki kodu o daha böyle

if (! $this->isLoggedIn())
    return false;

Ayrıca aşağıda işlevinde bir RETURN değeri olabilir ki bir kaç kere olduğunu görebilirsiniz. SO RETURN denir burada soru, bundan sonra herhangi bir kod çalışmaz? Gibi orada bu işlev için komut biter?

Bu durumda eğer bu koştu ...

if (! $this->isLoggedIn())
        return false;

O Aşağıdaki kodu çalışmaya devam ediyor mu?


Here is the function

<?PHP
private function logout($redir=true)
{
    if (! $this->isLoggedIn())
        return false;

    $this->obj->session->sess_destroy();

    if ($this->isCookieLoggedIn())
    {
        setcookie('user','', time()-36000, '/');
        setcookie('pass','', time()-36000, '/');
    }
    if (! $redir)
        return;

    header('location: '.$this->homePageUrl);
    die;
}
?>

4 Cevap

Evet.

PHP bir geri dönüş komutu gördüğünde, yürütme durur ve denir ne döndürür. Bu include s, fonksiyonu infazlara, yöntem, yürütme, vb içerir

Aşağıda, 'Test' echo asla:

$test = "test";
return;
echo $test;

Bir dosya içinde yer iseniz, iade its yürütme, ve dahil dosyayı duracaktır will finish executing.

Kullanım durumları biri tarif ne benzer:

public function echoString($string)
{
    if(!is_string($string))
    {
        return;
    }
    echo $string;
}

Kılavuzunu okuyarak başlayın:

http://us2.php.net/return

Bir yan not olarak ...

return anahtar kelime, bu gibi kullanılabilir olsa da, pek çok kötü bir uygulama olduğu için örnek işlevi kullanılır şekilde bunu kullanarak düşünün. Bu kod "akış" ile karmaşa can daha az okunabilir hale. (Similar to using the goto deyimi, kuşkusuz kadar kötü değil gerçi.)

Ben deftere kod böyle daha iyi yapılandırılmış olacağını iddia ediyorum:

<?php
function logout($redir=true)
{
    if ($this->isLoggedIn()) 
    {
        $this->obj->session->sess_destroy();

        if ($this->isCookieLoggedIn()) {
            setcookie('user','', time()-36000, '/');
            setcookie('pass','', time()-36000, '/');
        }

        if ($redir) {
            header('location: '.$this->homePageUrl);
            die;
        }
    }
}
?>

Hiçbir yerde bu sürümde bir bloğun dışında kod "mola" erken yapar. Aşağıdaki satırları idam edilip edilmeyeceği olmadığı konusunda herhangi bir şüphe yoktur asla.

Sanırım return bir işlev içinde kullanılabilir ve return dünyada kullanılan birbirinden ayırt etmek gerektiğini düşünüyorum.

PHP Function Reference dediği gibi, script yürütme sadece ikinci durumda durdurulur.

@ Jason, bir fonksiyonun içinde kullanımı hakkında soran gibiydi.