<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>xlab &#187; bug</title>
	<atom:link href="http://xlab.pl/tag/bug/feed/" rel="self" type="application/rss+xml" />
	<link>http://xlab.pl</link>
	<description>XSolve laboratory - dzielimy się tym co wiemy...</description>
	<lastBuildDate>Mon, 09 Jan 2012 15:29:06 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Dlaczego kocham PHP!</title>
		<link>http://xlab.pl/dlaczego-kocham-php/</link>
		<comments>http://xlab.pl/dlaczego-kocham-php/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 17:44:39 +0000</pubDate>
		<dc:creator>Marcin Dryka</dc:creator>
				<category><![CDATA[Programowanie PHP]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[błąd]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[love]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=636</guid>
		<description><![CDATA[Każdego programistę w życiu spotykają chwile doszukiwania się logiki lub chwile zwątpienia w zasady matematyki. Język PHP w znaczącym stopniu ułatwia zaistnienie takiej sytuacji. Wyobraźmy sobie, potrzebę napisania klasy umożliwiającej stronicowanie wyników. Metoda calculate służy do policzenia dolnego zakresu wyników (strona 5, wyniki 51-60). Całość wygląda następująco: class Pager { private $page = 1, $per_page [...]]]></description>
			<content:encoded><![CDATA[<p>Każdego programistę w życiu spotykają chwile doszukiwania się logiki lub chwile zwątpienia w zasady matematyki. Język PHP w znaczącym stopniu ułatwia zaistnienie takiej sytuacji.<br />
Wyobraźmy sobie, potrzebę napisania klasy umożliwiającej stronicowanie wyników. Metoda <em>calculate</em> służy do policzenia dolnego zakresu wyników (strona 5, wyniki <strong>51</strong>-60). Całość wygląda następująco:</p>
<pre name="code" class="php">
class Pager
{
  private
    $page = 1,
    $per_page = 10;

  public function calculate()
  {
    return $this-&gt;page * $this-&gt;per_page - $this-per_page + 1;
  }
}</pre>
<p>Jedna mała pomyłka. Zamiast</p>
<pre name="code" class="php">$this-&gt;per_page</pre>
<p>do kodu wkradło się:</p>
<pre name="code" class="php">$this-per_page</pre>
<p>Co to zmienia? Na pierwszy rzut oka parser PHP powinien poinformować o błędzie&#8230; jednak linia kodu zawierająca błąd interpretowana jest następująco:</p>
<pre name="code" class="php">
$this-&gt;page // 1</pre>
<pre name="code" class="php">
$this-&gt;per_page // 10</pre>
<pre name="code" class="php">
$this  // rzutowane na int to 1, bo obiekt istnieje</pre>
<pre name="code" class="php">
per_page // jako stała niezdefiniowana to 0</pre>
<p>Wykonywane działanie matematyczne wygląda zatem następująco:</p>
<pre name="code" class="php">
1 * 10 - 1 - 0 + 1</pre>
<p>Wynik działania to o dziwo 10&#8230; Dlatego kocham PHP!</p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/dlaczego-kocham-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

