Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Využij akce až 80 % zdarma při nákupu e-learningu - více informací. Zároveň pouze tento týden sleva až 80 % na e-learning týkající se Swift
discount week 80
Avatar
Jan Sagi
Člen
Avatar
Jan Sagi:1. června 17:25

Ahoj nedávno my PhpStorm napovídá použít void pro return ale dokumentaci jsem asi nepochopil kdy se má používát a jaké jsou jeho výhody? Děkuji za radu

 
Odpovědět
1. června 17:25
Avatar
Jan Kerhart
Člen
Avatar
Jan Kerhart:3. června 1:56

Nevím, jestli jsem otázku pochopil správně... Myslíš toto?

function foo(): void {

}

Za tu dvojtečku se uvádí návratový typ. Void znamená žádný, tj. takto deklarovaná funkce nebude (nesmí) vracet žádnou hodnotu. V praxi to znamená:

// Tato funkce je v pořádku.
function foo(): void {
    // nějaký kód
}

// Tato funkce je také v pořádku.
function bar(): void {
    // nějaký kód
        return;
    // nějaký kód
}

// Tato funkce vyhodí chybu: "Fatal error: A void function must not return a value"
function baz(): void {
    // nějaký kód
    return 1;
}

// Tato funkce je v pořádku.
function baz(): int {
    // nějaký kód
    return 1;
}

Používat by se to mělo ideálně vždy, kdy funkce nevrací žádnou hodnotu (a pokud vrací, tak místo void uveď její typ). Na rozdíl od většiny jiných jazyků je to v PHP ale nepovinné a starší verze PHP to dokonce ani nepodporovali.

Výhody to má prakticky asi dvě:

  • Zlepšuje to čitelnost a přehlednost kódu
  • Jednoznačně to určuje návratový typ – zamezí se tím chybám kvůli špatnému automatickému přetypování. Aby jsi této výhody plně využil, doporučuji povolit striktní kontrolu typů (vypnout automatické přetypování) na začátku souboru takto:
declare(strict_types=1);
 
Nahoru Odpovědět
3. června 1:56
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:3. června 9:09

Spis to z php dela podobnost s cpp(C++) kodem.
O prehlednosti by se dalo diskutovat. Ale fakt je, ze kdyz vis z prvniho radku, ze tam neni void, tak hledas ve funkci slova return. A kdyz tam void je, tak vis, ze tam return neni a bud funkce vraci data do promenne nebo zadna. Ale, vicemene je to jen bezvyznamne zdrzeni, vzdycky se da hledat slovo return :)

Editováno 3. června 9:09
 
Nahoru Odpovědět
3. června 9:09
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Peter Mlich
DarkCoder:3. června 12:50

A kdyz tam void je, tak vis, ze tam return neni...

Tento výrok je chybný. Funkce která nevrací hodnotu musí končit přechodem přes uzavírací závorku těla funkce } nebo příkazem return;, tak jak už zde v předchozím příspěvku správně uvedl Jan Kerhart. Nejde o přehlednost, ale o jednoznačnost. Než složitě hledat slovo return v těle funkce je lepší si přečíst komentář o významu návratové hodnoty nad hlavičkou definice funkce.

Nahoru Odpovědět
3. června 12:50
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Jan Sagi
Člen
Avatar
Odpovídá na Jan Kerhart
Jan Sagi:3. června 18:01

Děkuji moc za 100% srozumitelné vysvětlen už jsem zase o něco chytřejší :-) diky

 
Nahoru Odpovědět
3. června 18:01
Avatar
Jan Kerhart
Člen
Avatar
Odpovídá na Peter Mlich
Jan Kerhart:3. června 19:37

Mně to teda přijde rozhodně lepší vždy uvádět. To zlepšení je zejména když danou funkci potom voláš, jelikož v tu chvíli ti PhpStorm informaci o návratovém typu zobrazí a ty nemusíš tipovat nebo složitě hledat v dokumentaci jaký typ máš od funkce očekávat. Navíc návratový typ nemusí být pouze primitivní proměnná, kde je většinou z názvu funkce poměrně jasné, co máš očekávat, ale může se jednat o referenční datový typ, kde (obzvlášť při používání různých knihoven) není na první pohled často jasné, co máš vlastně čekat.

Když se vrátím přímo k void, tak jednak by mi přišlo nelogické u funkcí, které nic nevrací, nic neuvádět (v některé z verzí PHP to tak myslím bylo – již šlo uvádět návratový typ, ale neexistovalo ještě slovo void), protože by nebylo možné rozlišit, jestli na to programátor zapomněl/nechtěl a nebo jestli nic funkce nevrací. A navíc tím sdělíš IDE, že funkce nic nevrací a ono tě potom upozorní, pokud se pokusíš s návratovou hodnotou pracovat.

 
Nahoru Odpovědět
3. června 19:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.