<?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>Victor Farazdagi &#187; Certification</title>
	<atom:link href="http://www.phpmag.ru/category/programming/php5/certification/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phpmag.ru</link>
	<description>Phrozn, Phing &#38; Zend Framework Musings</description>
	<lastBuildDate>Fri, 19 Aug 2011 08:47:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>..о приоритетах выполнения операторов.</title>
		<link>http://www.phpmag.ru/2008/09/05/%d0%be-%d0%bf%d1%80%d0%b8%d0%be%d1%80%d0%b8%d1%82%d0%b5%d1%82%d0%b0%d1%85-%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d0%be%d1%80%d0%be%d0%b2/</link>
		<comments>http://www.phpmag.ru/2008/09/05/%d0%be-%d0%bf%d1%80%d0%b8%d0%be%d1%80%d0%b8%d1%82%d0%b5%d1%82%d0%b0%d1%85-%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d0%be%d1%80%d0%be%d0%b2/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 20:34:56 +0000</pubDate>
		<dc:creator>Victor Farazdagi</dc:creator>
				<category><![CDATA[Certification]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[PHP5 Tips]]></category>
		<category><![CDATA[сертификация php5]]></category>

		<guid isPermaLink="false">http://www.php-alania.ru/?p=163</guid>
		<description><![CDATA[Сегодня решил сделать над собой усилие и наконец-то выучить приоритеты выполнения операторов, или, говоря нормальным языком &#8211; operator precedence rules. Так как я всегда использую скобки для явного указания очередности исполнения операторов, особых проблем с операторами у меня не было. Однако, готовясь к сертификации, я подумал, что возможно стоит именно знать, а не просто иметь [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня решил сделать над собой усилие и наконец-то выучить <a href="http://www.php.net/manual/ru/language.operators.php">приоритеты выполнения операторов</a>, или, говоря нормальным языком &#8211; operator precedence rules.<br />
Так как я всегда использую скобки для явного указания очередности исполнения операторов, особых проблем с операторами у меня не было. Однако, готовясь к сертификации, я подумал, что возможно стоит именно <em>знать</em>, а не просто иметь представление.</p>
<p>Рассмотрим небольшой пример:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$x</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$x</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>      <span style="color: #666666; font-style: italic;">// int(0)</span></pre></div></div>

<p>Результат вполне ожидаем: так как <strong>!</strong> имеет более выский приоритет (унарные операторы являются одними из самых приоритетных, выше только квадратная скобка <strong>[</strong> и оператор <strong>new</strong>), то сначала преобразовывается выражение</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">!</span><span style="color: #000088;">$x</span> <span style="color: #666666; font-style: italic;">// !1 = 0</span></pre></div></div>

<p>а затем уже происходит умножение на 5, что и дает общий результат равный нулю.</p>
<p>Однако мы не можем применять ту же логику в выражении ниже (хотя, следуя документации логика абсолютно легитимна):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$x</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>      <span style="color: #666666; font-style: italic;">// bool(false)</span></pre></div></div>

<p>Несмотря на то что знак равенства <strong>=</strong>, так же как и знак плюса в примере выше, имеет меньший приоритет, чем унарный оператор <strong>!</strong>, PHP достаточно умен чтобы не интерпритировать все буквально (иначе должна быть выдана Parse Error &#8211; так как выражение <strong>0 = 5</strong>, полученное следуя правилам очередности операторов, не имеет смысла). PHP парсер сначала выполняет</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$x</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">;</span></pre></div></div>

<p>и только после этого применяет оператор отрицания <strong>!</strong>, что и дает нам результат:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">bool<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>Удачных выходных!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpmag.ru/2008/09/05/%d0%be-%d0%bf%d1%80%d0%b8%d0%be%d1%80%d0%b8%d1%82%d0%b5%d1%82%d0%b0%d1%85-%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d0%be%d1%80%d0%be%d0%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

