<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Komentář k příspěvku: 'Narážím na error_reporting: Notice'</title>
	<atom:link href="http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/</link>
	<description>česká uživatelská skupina programátorů v PHP</description>
	<lastBuildDate>Sat, 27 Mar 2010 07:19:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Od Hever</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2588</link>
		<dc:creator>Hever</dc:creator>
		<pubDate>Mon, 18 Feb 2008 12:44:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2588</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;Mě jako cesta do pekel příjde spíš kód plný kódu </p>
<p>&lt;code&gt;(isset($arr[&#039;prvek&#039;])?$arr[&#039;prvek&#039;]:NULL)&lt;/code&gt;</p>
<p>která stejný význam jako</p>
<p>&lt;code&gt;$arr[&#039;prvek&#039;]&lt;/code&gt;</p>
<p>Ale to už se opakuju.</p>
<p>Rozdíl proměnná vs. prvek vidím v tom, že při deklaraci fce můžu neexistujícím proměnným přiřadit defaultní hodnotu </p>
<p>&lt;code&gt;function fce($prom = null) { }&lt;/code&gt;</p>
<p>u prvků polí nikoliv. Jedině na začátku každé funkce přijímající pole, které může obsahovat různou množinu prvků, nejprve všechny používané prvky otestovat na existenci a případně jim dát NULL (tím si vymezím co všechno se může v poli předávat). To mi přijde jako jediné možné řešení, ostatní, kdy se neustále v kódu issetuju mi přijde cesta do pekel. Trochu pitomé to je, když se může to pole různě zanořovat.</p>
<p>Jinak budu nejspíš používat [22] vypnutí E_NOTICE pomocí error_reporting() asi.</p>
</description>
		<content:encoded><![CDATA[
<p>Mě jako cesta do pekel příjde spíš kód plný kódu</p>

<p><code>(isset($arr[‚prvek‘])­?$arr[‚prvek‘]:­NULL)</code></p>

<p>která stejný význam jako</p>

<p><code>$arr[‚prvek‘]</code></p>

<p>Ale to už se opakuju.</p>

<p>Rozdíl proměnná vs. prvek vidím v tom, že při deklaraci fce můžu
neexistujícím proměnným přiřadit defaultní hodnotu</p>

<p><code>function fce($prom = null) { }</code></p>

<p>u prvků polí nikoliv. Jedině na začátku každé funkce přijímající
pole, které může obsahovat různou množinu prvků, nejprve všechny
používané prvky otestovat na existenci a případně jim dát NULL (tím si
vymezím co všechno se může v poli předávat). To mi přijde jako jediné
možné řešení, ostatní, kdy se neustále v kódu issetuju mi přijde cesta
do pekel. Trochu pitomé to je, když se může to pole různě zanořovat.</p>

<p>Jinak budu nejspíš používat [22] vypnutí E_NOTICE pomocí
error_reportin­g() asi.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od Pavel Šindelka</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2497</link>
		<dc:creator>Pavel Šindelka</dc:creator>
		<pubDate>Sat, 16 Feb 2008 17:33:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2497</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[17] K tomu asociativnímu poli &#8211; měl jsem namysli ten případ, kdy se kód programu příliš spoléhá na to, že existují konkrétní položky v poli. Pokud by PHP v okamžiku, kdy k těmto položkám program přistupuje (a ony neexistují), neházelo NOTICE ale &quot;tiše&quot; vrátilo NULL, mnohem hůře by se na chybu přišlo. Už mnohokrát jsem byl nucen hledat chybu v cizím robustním kódu a věřtě mi, že v takových chvílích jsem za NOTICE velmi rád.</p>
<p>[18] Samozřejmě je to otázka přístupu. Já ve svých myšlenkách nerozlišuji proměnnou od prvku pole. Zkrátka nevidím důvod, proč by PHP v jednom případě mělo k problému přistupovat nějak a v druhém zase jinak.</p>
<p>A právě to isset mě od překlepů často zachrání, už jenom proto, že ten index zkrátka píšu dvakrát :) Pokud je někdo líný to ošetření dělat, ať si opravdu napíše tu pomocnou funkci. Mimochodem &#8211; násilím potlačovat chybový výpis přes @ je podle mě ve většině případů cesta do pekel.</p>
</description>
		<content:encoded><![CDATA[
<p>[17] K tomu asociativnímu poli – měl jsem namysli ten případ, kdy se
kód programu příliš spoléhá na to, že existují konkrétní položky
v poli. Pokud by PHP v okamžiku, kdy k těmto položkám program přistupuje
(a ony neexistují), neházelo NOTICE ale „tiše“ vrátilo NULL, mnohem
hůře by se na chybu přišlo. Už mnohokrát jsem byl nucen hledat chybu
v cizím robustním kódu a věřtě mi, že v takových chvílích jsem za
NOTICE velmi rád.</p>

<p>[18] Samozřejmě je to otázka přístupu. Já ve svých myšlenkách
nerozlišuji proměnnou od prvku pole. Zkrátka nevidím důvod, proč by PHP
v jednom případě mělo k problému přistupovat nějak a v druhém
zase jinak.</p>

<p>A právě to isset mě od překlepů často zachrání, už jenom proto, že
ten index zkrátka píšu dvakrát :) Pokud je někdo líný to ošetření
dělat, ať si opravdu napíše tu pomocnou funkci. Mimochodem – násilím
potlačovat chybový výpis přes @ je podle mě ve většině případů cesta
do pekel.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od Jakub Vrána</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2387</link>
		<dc:creator>Jakub Vrána</dc:creator>
		<pubDate>Thu, 14 Feb 2008 10:14:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2387</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[20] Kód, který má být schopný fungovat všude, může na začátku zavolat error_reporting() a E_NOTICE vypnout. Zavináč opravdu není dobré řešení.</p>
<p>[21] Zkrácený ternární operátor ($a ?: &quot;&quot;) už je v PHP 5.3, ale nikoliv ve významu ifsetor() &#8211; na nenastavené proměnný také vyhodí E_NOTICE.</p>
</description>
		<content:encoded><![CDATA[
<p>[20] Kód, který má být schopný fungovat všude, může na začátku
zavolat error_reporting() a E_NOTICE vypnout. Zavináč opravdu není dobré
řešení.</p>

<p>[21] Zkrácený ternární operátor ($a ?: "") už je v PHP 5.3, ale
nikoliv ve významu ifsetor() – na nenastavené proměnný také vyhodí
E_NOTICE.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od dgx</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2313</link>
		<dc:creator>dgx</dc:creator>
		<pubDate>Wed, 13 Feb 2008 01:05:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2313</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[20] počítej s tím, že tato vlastnost PHP se nezmění. Možná se objeví nějaký ifsetor nebo zkrácený ternární operátor, do té doby doporučuji napsat vlastní funkci (jen v komentářích jich bylo zmíněno několik). Dělám to tak taky.</p>
<p>Ještě tu nebyla zmíněna věc, že jedna věc je psaní kódu, a druhá věc jsou jeho pozdější úpravy. Těm se obvykle věnuje víc úsilí než samotnému psaní, navíc často probíhá s časovým odsupem. Nezavař si do budoucna! </p>
<p>Až po čase šáhneš do kódu, bude ti důležitým pomocníkem výpis error_reporting(E_ALL). Pokud error reporting neporadí, nastoupí zdlouhavé hledání chyby, na jehož konci nezřídkakdy bude řádek &quot;utlumený&quot; zavináčem. Právě proto radím zavináče nepoužívat. Nedají se totiž narozdíl od úrovní error_reporting snadno vypínat a zapínat.</p>
<p>Zároveň doporučuji psát kód tak, aby nevyhazoval E_NOTICE, protože když zapnu reportování kvůli hledání chyby, je nepohodlné ji hledat utopenou v hromadě &quot;nechyb&quot;.</p>
</description>
		<content:encoded><![CDATA[
<p>[20] počítej s tím, že tato vlastnost PHP se nezmění. Možná se
objeví nějaký ifsetor nebo zkrácený ternární operátor, do té doby
doporučuji napsat vlastní funkci (jen v komentářích jich bylo zmíněno
několik). Dělám to tak taky.</p>

<p>Ještě tu nebyla zmíněna věc, že jedna věc je psaní kódu, a druhá
věc jsou jeho pozdější úpravy. Těm se obvykle věnuje víc úsilí než
samotnému psaní, navíc často probíhá s časovým odsupem. Nezavař si do
budoucna!</p>

<p>Až po čase šáhneš do kódu, bude ti důležitým pomocníkem výpis
error_reportin­g(E_ALL). Pokud error reporting neporadí, nastoupí zdlouhavé
hledání chyby, na jehož konci nezřídkakdy bude řádek „utlumený“
zavináčem. Právě proto radím zavináče nepoužívat. Nedají se totiž
narozdíl od úrovní error_reporting snadno vypínat a zapínat.</p>

<p>Zároveň doporučuji psát kód tak, aby nevyhazoval E_NOTICE, protože
když zapnu reportování kvůli hledání chyby, je nepohodlné ji hledat
utopenou v hromadě „nechyb“.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od Hever</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2292</link>
		<dc:creator>Hever</dc:creator>
		<pubDate>Tue, 12 Feb 2008 16:48:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2292</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;Jakube, díky za pěkné přeformulování toho co mě vrtalo v hlavě. Když se teda znovu vyjádřím..</p>
<p>-&gt; Chci se spolehnout na výchozí hodnotu (NULL) neiniciovaného prvku pole.</p>
<p>-&gt; Současné řešení je nevhodné, v zásadě nic neřeší, pouze mě otravuje (vypisováním E_NOTICE).</p>
<p>-&gt; Dokud bude php tyto E_NOTICE vypisovat a nebude implemetované nějaké přijatelné řešení (např. zmíněné ifsetor), v kódu který má být schopný fungovat všude, budu nejspíš kacířsky používat @zavináč.</p>
<p>Jinak asi E_NOTICE vypínám budu psát elegantní kód :)</p>
</description>
		<content:encoded><![CDATA[
<p>Jakube, díky za pěkné přeformulování toho co mě vrtalo v hlavě.
Když se teda znovu vyjádřím..</p>

<ul>
	<li>&gt; Chci se spolehnout na výchozí hodnotu (NULL) neiniciovaného
	prvku pole.</li>

	<li>&gt; Současné řešení je nevhodné, v zásadě nic neřeší, pouze mě
	otravuje (vypisováním E_NOTICE).</li>

	<li>&gt; Dokud bude php tyto E_NOTICE vypisovat a nebude implemetované nějaké
	přijatelné řešení (např. zmíněné ifsetor), v kódu který má být
	schopný fungovat všude, budu nejspíš kacířsky používat @zavináč.</li>
</ul>

<p>Jinak asi E_NOTICE vypínám budu psát elegantní kód :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od VS</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2289</link>
		<dc:creator>VS</dc:creator>
		<pubDate>Tue, 12 Feb 2008 15:20:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2289</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[17] v zásadě máš pravdu.</p>
<p>Tohle sou možnosti, který můžes použít, seřazeno podle mě od nejvíc košér po nejmíň:<br />
1. používat isset() (takto to použití asi vývojáři php zamýšleli, aby nejméně dvojitým zapsáním proměnné byla eliminována pravděpodobnost překlepu, bohužel pro programátora na psaní nejvíce ukecané.)<br />
2. napsat si vlastní fci, která vrací null při neexistenci. (pokud se nebojíte překlepů a nechcete vypínat E_NOTICE)<br />
3. používat @ na potlačení chyb, tam kde chcete.<br />
4. vypnout zobrazování E_NOTICE.</p>
</description>
		<content:encoded><![CDATA[
<p>[17] v zásadě máš pravdu.</p>

<p>Tohle sou možnosti, který můžes použít, seřazeno podle mě od nejvíc
košér po nejmíň:</p>

<ol>
	<li>používat isset() (takto to použití asi vývojáři php zamýšleli, aby
	nejméně dvojitým zapsáním proměnné byla eliminována pravděpodobnost
	překlepu, bohužel pro programátora na psaní nejvíce ukecané.)</li>

	<li>napsat si vlastní fci, která vrací null při neexistenci. (pokud se
	nebojíte překlepů a nechcete vypínat E_NOTICE)</li>

	<li>používat @ na potlačení chyb, tam kde chcete.</li>

	<li>vypnout zobrazování E_NOTICE.</li>
</ol>
]]></content:encoded>
	</item>
	<item>
		<title>Od Jakub Vrána</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2287</link>
		<dc:creator>Jakub Vrána</dc:creator>
		<pubDate>Tue, 12 Feb 2008 15:15:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2287</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[16] Práce s neinicializovaným polem je samozřejmě nevhodná. Ale práce s neinicializovanými prvky inicializovaného pole je bezpečná a spolehnutí se na výchozí hodnotu neinicializovaného prvku často dává velmi dobrý smysl. Samozřejmě to je zkratka, ale &quot;značená&quot;, abych tak řekl</p>
<p>Kód (isset($_GET[&quot;seerch&quot;]) ? $_GET[&quot;seerch&quot;] : &quot;&quot;) tě od překlepů stejně jako samotné $_GET[&quot;seerch&quot;] nijak neuchrání. Mohl bys rozebrat &quot;přijde neočekávatelně asociativní pole v jiném formátu&quot;?</p>
</description>
		<content:encoded><![CDATA[
<p>[16] Práce s neinicializovaným polem je samozřejmě nevhodná. Ale práce
s neinicializo­vanými prvky inicializovaného pole je bezpečná a
spolehnutí se na výchozí hodnotu neinicializovaného prvku často dává
velmi dobrý smysl. Samozřejmě to je zkratka, ale „značená“, abych
tak řekl</p>

<p>Kód (isset($_GET[„s­eerch“]) ? $_GET[„seerch“] : "") tě od
překlepů stejně jako samotné $_GET[„seerch“] nijak neuchrání. Mohl bys
rozebrat „přijde neočekávatelně asociativní pole v jiném
formátu“?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od hever</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2270</link>
		<dc:creator>hever</dc:creator>
		<pubDate>Tue, 12 Feb 2008 12:29:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2270</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[16] &quot;Hovadinou&quot; jsem nazval ty funkce, které místo erroru vracejí null (protože mi přijdou nesmyslné a očekával bych tuto vlastnost od php samotného).</p>
<p>Můžu se zeptat, jakým postupem kontrolujete ta asociativní pole přicházející do nějaké funkce? Hned na začátku, kdy zkontrolujete strukturu a případě špatné struktury vypisujete error? Pokud ano, jak probíhá kontrola těch částí pole, která nemusejí být vyplněna &#8211; jsou nepovinná? Nebo kontrolujete v běhu, kdy se před dotazem na ten který index vždy první ptáte na existenci ..? Co když neexistuje a je nepovinný?</p>
</description>
		<content:encoded><![CDATA[
<p>[16] „Hovadinou“ jsem nazval ty funkce, které místo erroru vracejí
null (protože mi přijdou nesmyslné a očekával bych tuto vlastnost od php
samotného).</p>

<p>Můžu se zeptat, jakým postupem kontrolujete ta asociativní pole
přicházející do nějaké funkce? Hned na začátku, kdy zkontrolujete
strukturu a případě špatné struktury vypisujete error? Pokud ano, jak
probíhá kontrola těch částí pole, která nemusejí být vyplněna –
jsou nepovinná? Nebo kontrolujete v běhu, kdy se před dotazem na ten který
index vždy první ptáte na existenci ..? Co když neexistuje a je
nepovinný?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od Pavel Šindelka</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2268</link>
		<dc:creator>Pavel Šindelka</dc:creator>
		<pubDate>Tue, 12 Feb 2008 11:42:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2268</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[15] Rozhodně souhlasím s Davidem. Já naopak tuto vlastnost PHP vítám a ani náhodou ji nepovažuji za nepříjemnost nebo dokonce &quot;hovadinu&quot;. Podobně jako přístup k neinicializované proměnné, je i přístup a vůbec práce s neinicializovaným polem z principu nevhodná.</p>
<p>Bez těchto hlášek by se mnohem hůře odhalovaly nejen zmiňované překlepy, ale obecně případy, kdy přijde neočekávatelně asociativní pole v jiném formátu atp. Má praxe říká jednoznačně &#8211; E_NOTICE zapnout a poctivě se jin věnovat, jinak se to dříve či později vymstí (hlavně u větších aplikací, na kterých se podílí větší množství vývojářů).</p>
</description>
		<content:encoded><![CDATA[
<p>[15] Rozhodně souhlasím s Davidem. Já naopak tuto vlastnost PHP vítám a
ani náhodou ji nepovažuji za nepříjemnost nebo dokonce „hovadinu“.
Podobně jako přístup k neinicializované proměnné, je i přístup a
vůbec práce s neinicializovaným polem z principu nevhodná.</p>

<p>Bez těchto hlášek by se mnohem hůře odhalovaly nejen zmiňované
překlepy, ale obecně případy, kdy přijde neočekávatelně asociativní
pole v jiném formátu atp. Má praxe říká jednoznačně – E_NOTICE
zapnout a poctivě se jin věnovat, jinak se to dříve či později vymstí
(hlavně u větších aplikací, na kterých se podílí větší množství
vývojářů).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od hever</title>
		<link>http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/comment-page-1/#comment-2264</link>
		<dc:creator>hever</dc:creator>
		<pubDate>Tue, 12 Feb 2008 10:05:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.php-group.cz/2008/02/07/narazim-na-error_reporting-notice/#comment-2264</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;V napsání nějaké funkce není problém myslím. Jde mi o přístup. Vždyť je to hovadina, takové obezlice. Jenom proto, aby se poddalo pravidlu E_NOTICE.</p>
<p>&#8230; ta má kontrolovat překlepy apod. ale uvedenými způsoby se stejně dosahuje akorát toho, že následné překlepy zůstanou, akorát se nevypíšou jako chyba.</p>
</description>
		<content:encoded><![CDATA[
<p>V napsání nějaké funkce není problém myslím. Jde mi o přístup.
Vždyť je to hovadina, takové obezlice. Jenom proto, aby se poddalo pravidlu
E_NOTICE.</p>

<p>… ta má kontrolovat překlepy apod. ale uvedenými způsoby se stejně
dosahuje akorát toho, že následné překlepy zůstanou, akorát se
nevypíšou jako chyba.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
