Používáte atomy v PHP skriptech? rubrika: Programování: PHP

12 Kit
položil/-a 24.11.2014

Na blogu http://verraes.net/2014/11/higher-order-programming/ jsem našel speciální použití zavináče k definici atomu

echo @Ahoj;

vypíše string "Ahoj".

Pár smysluplných použití se najde, ale otázkou je, zda to někdo používá nebo zda je to považováno za "code smell". Kdysi jsem našel v diskuzi vyjádření ve smyslu, že za použití "@" ve skriptech se v zaměstnání ... (doplňte torturu dle potřeby).

Ten článek určitě stojí za přečtení, je v něm spousta dalších užitečných věcí.

Komentáře

  • 84mmdd : Ja zavinace nedemonizuju. Raci vidim a pisu tohle: if (!@$a['foo']) nez tohle: if(!isset($a['foo']) || empty($a['foo'])) Nicmene ten atom i me prijde za hranou. Ale zajimavy. 24.11.2014
  • Taco : Užití @ než isset se podepíše na výkonu. 24.11.2014
  • milan.matejcek : Skoro bych řekl že (!isset($a['foo']) || empty($a['foo'])) == empty($a['foo']). 24.11.2014
  • Kit : @milan.matejcek: $a = 'vskutku?'; 24.11.2014
  • 84mmdd : Taco: souhlas, podepise, ale zanedbatelne. U vykonu resim treba optimalizaci db dotazu, cachovani ... resp I/O veci. U veci jako je ten zavinac preferuju citelnost nad vykonem. Ale je to dane projektem, nic vykonove az takle kritickeho jsem nedelal v php. 24.11.2014
  • milan.matejcek : @Kit: to je ironie nebo souhlas? http://pastebin.com/3SW4pK5G 25.11.2014
  • Kit : @milan.matejcek: Bohužel ironie. Zkus si to dosadit. 25.11.2014
  • Vašek Ch. : Čitelnost je velmi subjektivní pojem. Mně se chce z nějakého !@$a['foo'] docela blinkat :-). Pro mě je zase čitelné přesnější array_key_exists('foo', $a) (misto ohýbání isset()). 25.11.2014
  • 84mmdd : Zajmavy. Skoro bych rekl, ze tohle se zmenilo nekdy spolu s tim, kdyz zaclo jit pristupovat k string offsetum pres hranaty zavorky. Tehle zmeny jsem si, priznavam, nevsiml. Stejne se mi osobne libi vic !@a['foo'] nez empty($a['foo']) :) 25.11.2014
  • 84mmdd : Vašek Chromický: jasne, pokud se to v tymu nesetka s pochopenim, tak se holt uskromnuju :) 25.11.2014
  • Kit : Zrovna na takové obtížné podmínky (a nejen na ně) mám testy, abych si ověřil, že fungují přesně podle mých představ. Zároveň dokumentují, jak se podmínka chová. 25.11.2014
  • danaketh : !@$var je hrozně super. Vypadá to jako komiksová náhražka nadávky :P No, vlastně... 25.11.2014
  • milan.matejcek : @Kit: Asi jsem úplně mimo. Protože nerozumím co, kam. Můžeš mi ukázat příklad? 25.11.2014
  • Kit : <?php $a = 'vskutku?'; echo (!isset($a['foo']) || empty($a['foo'])) ? 'true ' : 'false'; echo empty($a['foo']) ? 'true ' : 'false'; 25.11.2014
  • Kit : Zkouším to znovu na PHP 5.5 a výsledek je stejný. Ve verzi 5.4 byly výsledky rozdílné. 25.11.2014
  • milan.matejcek : @Kit: Mam 5.5 tento test jsem měl obsažený v tom co jsem dal na pastebin... Na php 5.4 se chová stejně jako php 5.5 a tyhle stránky umí spouštět různé verze php kde 5.0+ se chová stále stejně http://3v4l.org/bogo7 Vidím rozdíl v php 5.3 kde se chová jinak ale podmínka stále odpovídá. 25.11.2014
  • Kit : Večer se k tomu dostanu, projedu ty své testy znovu a dám vědět. 25.11.2014
  • kohven : To vážně nikomu nevadí, že empty("0") == true? 25.11.2014
  • Kit : @kohven: Takové predikáty zpravidla nepotřebuji, takže nevadí. Až mi to neprojde testem, budu to řešit. 25.11.2014
  • Žížala : @kohven: Mě to vadí, už jsem si na to párkát naběhnul, ale už si to pamatuji ... Resp. rychle to vyřeším, když to najdu 27.11.2014
  • Taco : @84mmdd: Násobné spomalení nepovažuji za zanedbatelnost. A vzhledem ke kontextu, že se to tu někdo pokouším prosadit za účelem constanty, docela troufalé argumentovat čitelností. 27.11.2014
  • Kit : @milan.matejcek: Našel jsem důvod mystifikace: Měl jsem tam ještě test na výraz "!@$a['foo']", který pro $a = 'vskutku?'; vrací false. Omlouvám se. 29.11.2014
  • mr.fatblunt : @kohven nejlepsi je, ze empty("0") == true ale empty("0.0") == false :-) 30.11.2014
  • Kit : Zdá se, že funkce empty() je určena jen pro fajnšmekry, kteří přesně takové chování potřebují. 30.11.2014
  • milan.matejcek : @Kit: V pohodě. 1.12.2014
odkaz
10 jiri.knesl
odpověděl/-a 24.11.2014

Je to ohýbání PHP na věci, na které není určeno. Použil bych konstantu.

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.