Závorky u jazykových konstrukcí

Školení, která pořádám

Když jsem začínal s PHP, tak se mi líbilo, že se všechno používá v podobě funkce, dokonce i příkaz pro vložení jiného souboru. Pak jsem se ale dozvěděl, že to tak úplně není a závorky jsem psát přestal. Platí to pro příkazy echo, include, return, exit a jejich varianty.

Závorky u nich napsat samozřejmě lze, ale mají stejný význam jako v matematickém výrazu. Je to totéž, jako kdybyste napsali $a = ($b + 5). Jiný význam závorek se navíc může vymstít třeba v momentě, kdy se dozvíme, že echo může mít více parametrů (což je paměťově šetrnější, než jejich zřetězení), include může mít návratovou hodnotu nebo return může být použito ve funkci vracející referenci:

<?php
// funguje
echo $a, $b;
if ((include "a.php") !== false) {
}
function &getSession($key) {
    return $_SESSION[$key];
}

// nefunguje
echo($a, $b);
if (include("a.php") !== false) {
}
function &getSession($key) {
    return($_SESSION[$key]);
}
?>

Vyplatí se tedy respektovat syntaxi PHP a závorky zbytečně nepsat tam, kde mají jiný význam, než to na první pohled vypadá. Já třeba z důvodu přehlednosti píšu závorky při vracení výsledku porovnání – return (volaniFunkce() == 5), jiný význam závorky ale naznačuji mezerou.

Závorky se nemusí psát ani při vytváření nového objektu bez předání parametrů konstruktoru (např. new stdClass).

Jakub Vrána, Dobře míněné rady, 29.7.2010, diskuse: 1 (nové: 0)

Diskuse

fos4:

Také funguje:

if ((include("a.php")) !== false) {
  ...
}

Diskuse je zrušena z důvodu spamu.

avatar © 2005-2024 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.