Autor Zpráva
nethor
Profil
Proč nejde odkazovat na nově vytvořený objekt tímto způsobem?:
$td[] =  new Td() ->addContent("obsah") ->Html();
Jde to pouze přes pomocnou prom., kterou vzápětí zahodím :
$tmp = new Td();
$td[]=  $tmp->addContent("obsah")->Html();    
unset($tmp);

... nebo to nějak jde?
Radek9
Profil
nethor:
Zabal to do závorek.
Alphard
Profil
nethor:
Nové verze PHP to umí. Ve starších se používaly různé workaroundy. Stejně jako přímý přístup ke konkrétnímu prvku, když funkce vrací pole...
nethor
Profil
Radek9:
To jsem zkoušel, $td[] = {new Td()} ->addContent("obsah") ->Html();
PHP 5.3.6 mi ale hlásí Parse error: syntax error, unexpected '{' ...
Obyčejné ani hranaté taky neprojdou.

Alphard:
Tož se tedy časem dočkáme. Zatím hold použiju delší zápisy.
Která verze PHP to už umi?
Radek9
Profil
nethor:
Složené i hranaté jsou blbost. Pokud nefungují kulaté, tak je to funkční až od PHP 5.4. Na 3.6 tedy asi půjde jen ten způsob přes proměnnou. Případně by možná mohlo fungovat tohle:
function same($val) {
  return $val;
}
$td[] = same(new Td())->addContent("obsah")->html();
nethor
Profil
Radek9:
Přes funkci to jde, dobrý nápad, díky.

Složené závorky až taková blbost nejsou, lze s nimi řešit např:
function Custom($idtr, $object){    
    ...
    return     $this->Values[$idtr]->{$object->Alias}    ;
}    
.. ikdyž zde je to pro koverzi na string.

... hranaté jsem zkusil jen do počtu.
Radek9
Profil
nethor:
Já netvrdím, že jsou nepoužitelné, ale jsou k něčemu úplně jinému. Použití v [#4] je logicky syntax error. Hranaté se používají pro zápis pole.
Alphard
Profil
V 5.4 se používají kulaté závorky, např.
echo (new DateTime())->format('Y-m-d H:i:s');
jejich použití je nezbytné.

Obecně je dobré sledovat, co se v nových verzích mění. Protože se nejen přidává, ale u ubírá a mění vychozí nastavení.

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: