Autor Zpráva
Jirik1
Profil *
Ahoj, chtěl jsem se zeptat. Co znamená prázdný return ve funkci?
Například

class Trida {

public function funkce() {

$teloFunkce = 1;
return;

}

}
Kajman
Profil
Ukončí vykonávání funkce a vrátí NULL. Je to tedy samé jako

return NULL;
Jirik1
Profil *
Díky Kajmane za odpověď. A k čemu je to dobré psát funkci, kterou nechci vykonat?


Jirik1:
Aha, tak už vím :-)
Mlocik97m
Profil *
return nema nic spolocne s tym ci sa funkce vykona ci nikoliv... return je len odovzdanie hodnoty premennej ako navratovu hodnotu funkcie... return; znamena ze sa odovzda null. Resp. ze funkce "nebude" mat navratovu hodnotu.
N71
Profil *
To taky nikdo netvrdil – jde jen o to, že po návratu hodnoty už není případný zbytek funkce vykonán.
Jistá výjimka z tohoto pravidla je konstrukt yield, který umožňuje jedním zavoláním vracet z funkcí více iterovatelných hodnot, ale do toho není třeba zabrušovat.
Jirik1
Profil *
Já jsem to včera zkoušel, uvádím příklad:

<?php namespace jakPsatWeb;

class TestReturn {

    public $promenna = 1, $promenna2 = 2, $promenna3 = 3;

    public function funkce() {

        echo $this->promenna;
        return;
        echo '<br />' . $this->promenna2; // promenna2 se nevypise.

    }

    public function funkce2 () {

        echo '<br />' . $this->promenna;

        if ($this->promenna2 == 2) {

            return;

        } else {

            echo '<br />' . $this->promenna2;

        }

        echo '<br />' . $this->promenna3; // pokud je $promenna2 == 2, pak se nevypise ani $promenna3.

    }

}    
?>

<!DOCTYPE html>
    <head>
    <meta charset="utf-8" />
    <title>Return</title>
    <style type="text/css">
        body {
            font-family: Verdana, sans-serif;
        }
        h1 {
            font-size: 14px; 
            font-weight: bold; 
            text-decoration: underline; 
            font-style: italic;
        }
    </style>
    </head>
        <body>
            <h1>Prazdny return ve funkci:</h1>

            <?php

                $testR = new TestReturn;
                $testR->funkce();
                $testR->funkce2();

            ?>

        </body>
</html> 
Joker
Profil
Takhle použité je to samozřejmě nesmysl.
(Lepší IDE by k řádku 11 přidalo upozornění, že se na ten kód nelze dostat.)

Samozřejmě je nesmysl mít ve funkci kód, ke kterému se nikdy nelze dostat.
Ale jelikož existují podmínky a cykly (a try-catch), může mít funkce i více konců.
Jirik1
Profil *
Vím, že to je nesmysl. Jen to znázorňuje fakt, že to funguje.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0