<?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>Уроки PHP, Mootools, JavaScript, ActionScript, HTML, CSS</title>
	<atom:link href="http://php.infoniac.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://php.infoniac.ru</link>
	<description>Уроки программирования от новичка новичкам</description>
	<lastBuildDate>Mon, 30 Jan 2012 06:24:57 +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://php.infoniac.ru/blog-slomalsya.html</link>
		<comments>http://php.infoniac.ru/blog-slomalsya.html#comments</comments>
		<pubDate>Fri, 27 Jan 2012 14:51:48 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Работа с сайтом]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[custom permalinks plugin]]></category>
		<category><![CDATA[error 404]]></category>
		<category><![CDATA[forbidden 403]]></category>
		<category><![CDATA[permalinks]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[документ не найден]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1140</guid>
		<description><![CDATA[Недавно снова мучился с тем, что блог "сломался". Вдруг, ни с того, ни с сего, все страницы начали возвращать ошибку 404 (т.е. страница не найдена), а после некоторых моих попыток исправить это, сервер снизил на единицу код возвращаемой ошибки до 403 и теперь весь блог попал под статью "у вас нет прав для просмотра данной страницы". И так весь блог! Я немного помучился, всё исправил, но неприятный осадок остался, плюс, наверняка было много посетителей, которые, в течение дня, приходили, видели белый экран и уходили, создав свое впечатление. В любом случае, я попытался объяснить, что произошло, тем самым, создал себе заметку о том, какие действия нужно предпринимать в таких случаях. Возможно они ещё кому-нибудь помогут.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Добрый день, друзья!<br />
У меня несколько дней назад сломался блог. Поломка эта заключалась в том, что перестали работать постоянные кастомные сслылки, которые обеспечиваются плагином Custom Permalinks. Перестало это дело работать, как мне показалось, ни с того, ни с сего. Вроде как не заходил много времени, не изменял ничего, а тут бац! И на что не нажму, ничего не найдено. Вроде как можно было это исправить, используя встроенный вордпресс модуль постоянных ссылок, но меня же волновало, что поисковики будут не туда присылать людей. В итоге, я так наковырял, что у меня вообще весь блог отдавал ошибку 403, а при этом я на работе, там же работой надо заниматься, а у меня &#8220;трубы горят&#8221;, хочу знать, что происходит и как это исправить, а я на работе, там работать надо и прокси режет чуть ли не все сайты, на которые &#8220;нельзя&#8221;.<br />
Но, раз уж это сообщение вы читаете, значит все было починено, и вот, в чём было дело:</p>
<h2>Почему может быть ошибка 403</h2>
<p>Если вы неопытный вебмастер, то ошибка 403 с сообщением &#8220;Forbidden blablabla&#8221;, может вас загнать в ступор, но, как я понял на собственной ошибке, это очень синтетический ступор, который каждый сам себе создает.<br />
Итак, этот http кож говорит о том, что на файл, или скрипт, пытается получить доступ к файлу или папке, доступ к которым запрещён. При появлении такой ошибки, нужно посмотреть, какие именно страницы вызывают ошибку и попробовать вычислить файл или папку, к которой запрещён доступ. Для этого, подозрительным папкам выставляйте права <strong>chmod 777</strong>, но после исправления ошибки ОБЯЗАТЕЛЬНО опустить уровень доступа до 755 для папок и 644 для файлов.<br />
В моем случае, я пока игрался с файлом .htaccess, каким-то образом изменил права на всю папку, в которой у меня находится блог. Таким образом я долго мучился, чтобы понять, что я серьезно лажанулся.</p>
<h2>Ошибка работы плагина Custom Permalinks</h2>
<p>Тут всё просто! Последняя версия этого плагина &#8211; 0.7.8, а последняя (на момент написания поста) версия WordPress &#8211; 3.3.1, а плагин тестировался с версией 3.2.1. Вот, как оказалось, и вся математика. Если внезапно, после обновления, или даже просто так, перестали работать постоянные ссылки, попробуйте откатить плагин Custom Permalinks назад на одну версию, и всё получится;)</p>
<p>Надеюсь помогло!</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/blog-slomalsya.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Замена: ГИБДДшник на пешехода или водителя-нарушителя</title>
		<link>http://php.infoniac.ru/voditeli-vmesto-inspektorov-gibdd.html</link>
		<comments>http://php.infoniac.ru/voditeli-vmesto-inspektorov-gibdd.html#comments</comments>
		<pubDate>Wed, 07 Dec 2011 19:07:26 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[гибдд]]></category>
		<category><![CDATA[пдд]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1127</guid>
		<description><![CDATA[Вечером смотрели новости но ящику: Акция с условным названием &#8220;Инспектор на час&#8221; проходит в Красноярске 07.12.2011 Шанс почувствовать себя автоинспекторами выпал обычным водителям в Красноярске. Такую акцию провели настоящие сотрудники ГИБДД. Возможность&#8230; Подробнее » Так вот, в связи этой новостью, у меня родилось предложение: почему бы ГИБДД как гос. структуру вообще не упразднить? Ведь всё [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Вечером смотрели новости но ящику:</p>
<div style="background-color: #e4e4e4; padding: 3px; border-radius: 5px; padding-left: 7px;">
<h3 style="font-size: 16px; color: #4e4e4e; font-weight: normal; padding-bottom: 3px; font-family: Tahoma, Arial, Helvetica, sans-serif;"><a href="http://www.1tv.ru/news/social/193063">Акция с условным названием &#8220;Инспектор на час&#8221; проходит в Красноярске</a></h3>
<div style="font-size: 11px; color: #666666; padding-bottom: 3px;">07.12.2011</div>
<p id="insert_blogs_aded02" style="padding: 0px;">Шанс почувствовать себя автоинспекторами выпал обычным водителям в Красноярске. Такую акцию провели настоящие сотрудники ГИБДД. Возможность&#8230; <a style="color: #065fd1;" href="http://www.1tv.ru/news/social/193063">Подробнее »</a></p>
<div style="margin: 0 auto; width: 460px;"><object width="460" height="353"><embed id="videoportal" type="application/x-shockwave-flash" width="460" height="353" src="http://www.1tv.ru/newsvideo/193063" align="middle" flashvars="stats=http://www.1tv.ru/addclick/" allowscriptaccess="always" swliveconnect="true" wmode="window" allowfullscreen="true" quality="high" bgcolor="white" name="videoportal"></embed></object></div>
</div>
<p>Так вот, в связи этой новостью, у меня родилось предложение: почему бы ГИБДД как гос. структуру <strong>вообще не упразднить</strong>? Ведь всё получается действительно просто: это как некое проклятье &#8211; штрафанулся, получи жезл, слюнавчик и лови следующего штрафника. Так, ведь, однажды останется один вечный ГИБДДшник, или это будет уже некий стражник ПДД, т.к. больше никто не захочет выступать в роли ГИБДДшника. Такой вот простой план. Вдруг сработает!</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/voditeli-vmesto-inspektorov-gibdd.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ГИБДД ЗелАО, похоже, стало бороться с нарушителями ПДД через Яндекс.Карты</title>
		<link>http://php.infoniac.ru/gibdd-zelao-yandex-karty-i-probki.html</link>
		<comments>http://php.infoniac.ru/gibdd-zelao-yandex-karty-i-probki.html#comments</comments>
		<pubDate>Mon, 05 Dec 2011 12:12:23 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[гибдд]]></category>
		<category><![CDATA[общение]]></category>
		<category><![CDATA[Яндекс.карты]]></category>
		<category><![CDATA[Яндекс.Пробки]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1116</guid>
		<description><![CDATA[Некое подразделение ГИБДД с конца ноября пытается вразумить автовладельцев, взывает к их культуре и внимательности на дороге через Интернет сервис, который, скорее всего, больше всех используется автовладельцами если не по всей России, так по Москве уж точно - <strong>Яндекс.Карты</strong>. ГИБДД информирует, доносит до сведения и взывает к культуре и взаимопонимаю через Яндекс.Карты используя метку "Восклицательный знак".]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Вчера были с женой в МЕГЕ Химкинской. Уезжали от туда поздно, но, пока машина прогревалась, решил посмотреть, на всякий случай пробки через Яндекс.Пробки. Пробок в 22:30 в той области не оказалось, но привлек внимания метка &#8220;Восклицательный знак&#8221; на разъездном кругу около МЕГИ, с которого народ разъезжается по домам.</p>
<p><a href="http://php.infoniac.ru/wp-content/uploads/yandex.probki1.jpg"><img src="http://php.infoniac.ru/wp-content/uploads/yandex.probki1-150x150.jpg" alt="ГИБДД ЗелАО общается с автолюбителями через сервис Яндекс.Пробки" title="ГИБДД ЗелАО общается с автолюбителями через сервис Яндекс.Пробки" width="150" height="150" class="size-thumbnail wp-image-1117" /></a></p>
<p>Следующим днём снова смотрел пробки, и уже обнаружил несколько точек типа &#8220;Восклицательный знак&#8221; в этой области и, О чудо!!, все они были обращениями ГИБДД к автовладельцам. Так, ГИБДД предупреждало автовладельцев о том, что в данном регионе, из-за отсутствия культуры вождения были установлены <strong>ИДН</strong> (Искусственные дорожные неровности &#8211; <em>лежачие</em> по нашему <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), просят не ездить по обочинам, а то из-за большого количества ДТП страдают тысячи людей, отстаивая в пробках и т.д.</p>
<p>Что самое интересное, судя по всему, по всей Москве лишь отделение ГИБДД по ЗелАО (или Химкинское ГИБДД, в том числе) взялось за общение с автовладельцами через самый часто используемый сервис &#8211; Яндекс.Карты / Яндекс.Пробки. По крайней мере, листая карту всей Москвы,  восклицательные знаки были замечены мной только вдоль Ленинградского шоссе и в Зеленограде.
</p>
<p>Посмотреть все обращения ГИБДД к водителям можно на самих Яндекс.Картах, включив пробки и дорожные события, или через мобильные Яндекс.Карты. Интересно будет ли в этом толк?</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/gibdd-zelao-yandex-karty-i-probki.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание собственных классов в Mootools &#8211; Урок 18 &#8211; Часть первая</title>
		<link>http://php.infoniac.ru/klassy-mootools-urok18-chast1.html</link>
		<comments>http://php.infoniac.ru/klassy-mootools-urok18-chast1.html#comments</comments>
		<pubDate>Thu, 24 Nov 2011 16:12:51 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[классы]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1110</guid>
		<description><![CDATA[Доходим до самих программистских штук в программировании: классы и абстрактные объекты. Если овладеть этим предметом, то можно смело начинать творить свои проекты, т.к. классы незаменимы, когда речь доходит до сложных задач. Читаем урок, соатвляем отзывы.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Сегодня попробую рассказать об одном из самых сложных для меня предметов в программировании &#8211; о <strong>КЛАССАХ</strong>. Этот страшный КЛАСС &#8211; это некий контейнер, некое собрание переменных и функций, которые обрабатывают ранее упомянутые переменные, чтобы получить определённый результат. Классы очень полезны при работе над более сложными проектами.</p>
<h3>Переменные</h3>
<p>Мы уже говорили об использовании хеш-массивов, так что пример ниже не должен никому показаться сложным.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//Создаем новый класс с именем Klass_first</span>
	<span style="color: #006600; font-style: italic;">//класс содержит две внутренние переменные</span>
	<span style="color: #003366; font-weight: bold;">var</span> Klass_first <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		variable_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Я первая переменная&quot;</span><span style="color: #339933;">,</span>
		variable_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Я вторая переменная&quot;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Как и при работе с хеш-массивами, получить доступ к переменным в классе довольно просто. В примере ниже обратите внимание, что нужно создать экземпляр нового класса.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> run_demo_one <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//создадим объект на основне нашего класса Klass_first</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_1 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_first<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//Отобразить переменные нашего класса</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>demo_1.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>demo_1.<span style="color: #660066;">variable_two</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_1" class="pseudobutton">Запуск первой демки</span></p>
<h3>Методы и функции</h3>
<p><strong>Методы</strong> &#8211; это, по существу, обычные функции, но, которые принадлежат определённому классу. Эти методы нужно вызывать исключительно из созданного ранее экземпляра класса. Методы классов опредеояются также, как и обычные переменные, за исключением того, что методу задается статическое значение и передается анонимная функция:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Klass_second <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		variable_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Вот значение первой переменной&quot;</span><span style="color: #339933;">,</span>
		variable_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Вот значение второй переменной&quot;</span><span style="color: #339933;">,</span>
		function_one <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение первой переменной : '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		function_two <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение второй переменной : '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_two</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Обратите внимание на использование ключевого слова <strong>this</strong>. По причине того, что все переменные работают во внутренней среде класса, получать доступ к знчению этих переменных можно только используя слово <strong>this</strong>, иначе результат работы метода будет значение <strong>undefined</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//работает</span>
	working_method <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Первое значение : '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//не работает</span>
	broken_method <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Второе значение : '</span> <span style="color: #339933;">+</span> variable_two<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Вызов методов нового класса работает также, как и вызов переменных класса.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> run_demo_2 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//создаем экземпляр класса Klass_second</span>
		<span style="color: #003366; font-weight: bold;">var</span> demo_2 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_second<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #006600; font-style: italic;">//вызываем функцию function_one</span>
		demo_2.<span style="color: #660066;">function_one</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #006600; font-style: italic;">//вызываем функцию function_two</span>
		demo_2.<span style="color: #660066;">function_two</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_2" class="pseudobutton">Запуск второй демки</span></p>
<h3>Метод initialize:</h3>
<p>Метод <strong>initialize:</strong> &#8211; это специальная функция класса, в которую можно сбросить все действия и параметры по настройке класса и определённые пользовательские опции и переменные. <strong>initialize:</strong> определяется также, как и обычные методы классов:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//определяем функцию инициализации класса с одним параметром</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>user_input<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//создаем переменную для этого класса, чьим значением</span>
		<span style="color: #006600; font-style: italic;">//будут пользовательские данные</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> user_input<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p><strong>initialize:</strong> можно использовать для изменения других опций или параметров:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>true_false_value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>true_false_value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">message</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Всё, что говориться в этом уроке - правдиво!&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">message</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Всё, что говориться в этом уроке - лживо!&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Этот экземпляр класса скажет, что</span>
<span style="color: #006600; font-style: italic;">//&quot;Всё, что говориться в этом уроке - правдиво!&quot;</span>
<span style="color: #003366; font-weight: bold;">var</span> myclass_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Этот экземпляр класса скажет, что</span>
<span style="color: #006600; font-style: italic;">//&quot;Всё, что говориться в этом уроке - лживо!&quot;</span>
<span style="color: #003366; font-weight: bold;">var</span> myclass_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Такой принцип определения экземпляра класса работает и в других случаях, только нужно помнить о запятых между каждой парой {ключа/значения}. Эту злосчастную запятую очень легко пропустить и продатить по безобразия много времени в поисках несуществующих багов в коде.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Klass_third <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//запуск функции при определении экземпляра класса</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>one<span style="color: #339933;">,</span> two<span style="color: #339933;">,</span> true_false_option<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span> <span style="color: #339933;">=</span> one<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_two</span> <span style="color: #339933;">=</span> two<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>true_false_option<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">boolean_option</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Выбрана опция TRUE&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">boolean_option</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Выбрана опция FALSE&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//определения методов</span>
	function_one <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение первое: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	function_two <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение второе: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_two</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> run_demo_3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Class_three<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Значение для первой переменной&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Значение для второй переменной&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_3.<span style="color: #660066;">function_one</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_3.<span style="color: #660066;">function_two</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_3" class="pseudobutton">Запуск третей демки</span></p>
<h3>Внедрение параметров</h3>
<p>При создании классов, часто необходимо задать некоторым переменным значения по умолчанию, чтобы, если пользователь не задает никаких значений, классу было бы с чем работать. Это можно сделать вручную, указав необходимые значения в функции инициализации и далее, проверяя кажду переменную на предмет того, было ей передано значение или нет и заменяя дефолтные значения, при необходимости. Но, можно просто подключить класс Options, который входит в состав модуля Mootools Class.extras.</p>
<p>Добавить функционал опций своему классу также просто, как добавить ещё одну пару ключ/значение к опциям инициализации:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>По поводу <strong>Implements</strong> особо пока заморачиваться не будем, но более подробно остановимся на нём в следующих уроках. А сейчас, когда мы подключили функционал Options, нужно определить дефолтные значения параметров. Как и всегда, нужно всего-лишь добавить ещё одну пару ключ/значение в опции инициализации класса, но этот хеш-массив уже будет вложенным:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Значение первого параметра&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Значение второго параметра&quot;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Итак, значения по умолчанию установлены, только теперь нужен способ перезаписи этих значений пользователем при создании экземпляра класса и этот способ заключается в добавлении всего нескольких строчек кода. Об остальном заботится класс Options.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение первого параметра&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение второго параметра&quot;</span>
	<span style="color: #009900;">&#125;</span>
	initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Итак, после того, как все эти действия выполнены, перезаписать эти значения не сложнее, чем добавить ещё одну пару ключ/значение.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Перезаписываем оба дефолтных значения</span>
<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	options_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписываем первое дефолтное значение&quot;</span><span style="color: #339933;">,</span>
	options_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписываем второе дефолтное значение&quot;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Перезаписываем только одно дефолтное значение</span>
<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	options_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписываем второе дефолтное значение&quot;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Обратите внимание на использование метода <strong>setOptions</strong>, который вызывается в методе инициализации. Этот метод &#8211; это часть класса Options и он также позволяет устанавливать опции (параметры) после того, как был создан экземпляр класса.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//Устанавливаем первый параметр</span>
	class_instance.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>options_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписать первый параметр&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>После того, как опци (параметры) были установлены, к ним можно обращаться через переменную <strong>options</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//Обращаемся к значению первого параметра</span>
	<span style="color: #003366; font-weight: bold;">var</span> class_option <span style="color: #339933;">=</span> class_instance.<span style="color: #660066;">options</span>.<span style="color: #660066;">options_one</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//переменная class_option теперь имеет значение &quot;Дефолтное значение первого параметра&quot;</span></pre></div></div>

<p>Если же нужно обратиться к переменной изнутри класса, нельзя забывать про <strong>this</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Первое дефолтное значение&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Второе дефолтное значение&quot;</span>
	<span style="color: #009900;">&#125;</span>
	test <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//обратите внимание на использование this</span>
		<span style="color: #006600; font-style: italic;">//для обращения к классу</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">option_two</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//Следующая строчка выведет сообщение &quot;Второе дефолтное значение&quot;</span>
class_instance.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ну, а если всё вышеперечисленное соединить в один код, получится следующее:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Klass_fourth <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение Первого Параметра&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение Второго Параметра&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	show_options <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//тут мы используем функцию print_r(), позаимсвованную из PHP</span>
		<span style="color: #006600; font-style: italic;">//немного о ней будет сказано чуть ниже</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>print_r<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> run_demo_4 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_4 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fourth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Новое значение первого параметра&quot;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_4.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> run_demo_5 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_5 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fourth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_5.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_5.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Новое значение второго параметра&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_5.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Создадим новый экземпляр класса Klass_fourth</span>
<span style="color: #006600; font-style: italic;">//в который добавим новый параметр - new_option</span>
<span style="color: #003366; font-weight: bold;">var</span> run_demo_6 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_6 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fourth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>new_option <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Это значение нового, добавленного параметра&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_6.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_4" class="pseudobutton">Запуск четвертой демки</span><br />
<span id="demo_5" class="pseudobutton">Запуск пятой демки</span><br />
<span id="demo_6" class="pseudobutton">Запуск шестой демки</span></p>
<h3>Вкусняшки!</h3>
<p>Наверняка многие знакомы с функцией <strong>print_r()</strong> из <a href="/category/php">PHP</a>, которая используется в методе show_options:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">   	show_options <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>print_r<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>print_r()</strong> &#8211; это не родная функция JavaScript, но она была ассимилирована в рамках проекта PHP2JS. Ну, а для тех, кто не знает, что такое PHP, объясню, что функция print_r() возвращает форматированную строку, созданную из пар ключ/значение. Это очень полезная функция для поиска и исправления ошибок. Кому интересен искодный код этой функции можно её найти в исходном коде страницы. Надеюсь все знают, как найти исходный код страницы? Подсказка.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Klass_fifth <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Подключаем класс Options</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//Устанавливаем дефолтные опции</span>
	options <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение первого параметра пятого класса&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение второго параметра пятого класса&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//подключаем дефолтные значения</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//определяем метод, выводящий сообщение</span>
	<span style="color: #006600; font-style: italic;">//с форматированной строкой из массива с параметрами</span>
   	show_options <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>print_r<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//определяем метод для обмена значений</span>
	<span style="color: #006600; font-style: italic;">//между двумя параметрами</span>
	swap_options <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
			option_one <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">option_two</span><span style="color: #339933;">,</span>
			option_two <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">option_one</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> demo_7<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_7 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fifth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Новое значение первого параметра&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">swap_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_7" class="pseudobutton">Запуск седьмой демки</span></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/klassy-mootools-urok18-chast1.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Купонаторы распродают айФоны</title>
		<link>http://php.infoniac.ru/kuponatory-rasprodaiut-iphone4s</link>
		<comments>http://php.infoniac.ru/kuponatory-rasprodaiut-iphone4s#comments</comments>
		<pubDate>Mon, 14 Nov 2011 11:31:39 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[iphone 4s]]></category>
		<category><![CDATA[куполны]]></category>
		<category><![CDATA[купонаторы]]></category>
		<category><![CDATA[оффтоп]]></category>
		<category><![CDATA[скидки]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1103</guid>
		<description><![CDATA[Компания Apple в последнее время набрала дополнительные пункты в своей популярности. Отчасти, это связано с недавним печальным событием, омрачившим историю компании, а отчасти, что касается наших реалий, рост популярности продукции Apple связан с сайтами купонаторами, которые предлагают пользователям Интернета различные товары и услуги по грошовым ценам, с "нереальными" скидками. И вот, под прицел купонаторов попали iPhone4S и iPad 2.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>&#8220;Внимание, внимание! Атракцион невиданной щедрости!&#8221; Купонаторы разразили атракционами и каждый мало-мальски значимый игрок на российском рынке купоно-скидочный акций посчитал нужным предложить своей аудитории приобрести iPhone 4S с неворятной скидкой.</p>
<p>Сейчас меня удивил сайт Групон. Насколько я понял, Groupon &#8211; это компания, которая действует чуть ли не во всем мире, так что, наверняка, эти ребята доволльно серьезные. Но их акция (из тех, которые я видел на купонных сайтах), получается одна из самых &#8220;обдирающих&#8221;.</p>
<p><a href="http://php.infoniac.ru/wp-content/uploads/groupon-iphone.jpg"><img src="http://php.infoniac.ru/wp-content/uploads/groupon-iphone-300x216.jpg" alt="Предложение сайта groupon.ru о продаже со скидкой iPhone 4S" title="groupon-iphone" width="300" height="216" class="alignleft size-medium wp-image-1104" /></a></p>
<p>Минимальная цена на Групоне такая же, как и на <a href="http://bigbuzzy.ru/catalog/iphone4s/">BigBuzzy</a>, но, как и на BigBuzzy, на Групоне есть свой подвох. На BB телефоны начнут (на это надяются около 7000 человек) раздавать/развозить с 25-го ноября. На Групоне вожделенный <strong>iPhone 4S</strong> можно забрать сразу, только вот, чтобы забрать его по минимально предлагаемой цене, нужно оплатить попутно ещё некий безлимитный тариф &#8220;IPhone 4S Москва/IPhone 4S Область&#8221;, предоставляемый оператором сотовой связи Beeline на год вперёд. А год использования этого тарифного плана стоит немного-немало <strong>30600 рублей</strong>. Но, можно оплатить лишь пять месяце использования безлимитного тарифного плана (12750 рублей), только вот тогда цена телефона вырастет до 23990 рублей. В итоге, если рассмотреть варианты покупки <strong>телефона iPhone4S</strong> на сайте groupon.ru, можно увидеть что:</p>
<ul>
<li>оплачивая годовое использование предлагаемого тарифного плана на телефон (и тарифный план), будет истрачено 19990 + 30600 = 50590 рублей</li>
<li>оплачивая 5-тимесячное использование предлагаемого тарифного плана на телефон (и тарифный план), будет истрачено 23990 + 12750 = 36740 рублей</li>
</ul>
<p>Сам телефон на сайте партнёра акции, компании <strong>GoldenSim</strong>, как товар, не указан. Компания ГолденСим торгует тарифными планами золотой четверки. Только тарифы Билайн, которые компания ГолденСим предлагает, на официальном сайте оператора, я не обнаружил. Да, и хватит ли ума билайновцам использовать в названии своего тарифного плана название устройства, которое официально ещё не поступила прилавки? Сомневаюсь.</p>
<p>Написав все эти абзацы, я ни коим образом не пытался утверждать, что Групон &#8211; это ловушка, что ГолденСим &#8211; это мошенники, или что данная акция &#8211; лохотрон! НЕТ! Компании занимаются современным бизнесом, они пытаются залезть на гребенб волны, волны под названием Apple. Ведь сегодня каждый пытается как-то воспользоваться этим громким именем, чтобы извлечь для себя выгоду. Ну, а что касается акций, купонов и скидок &#8211; <strong>внимательно читайте все условия акции!</strong></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/kuponatory-rasprodaiut-iphone4s/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Учимся играть на Mootools Accordion-е. Урок 17. Долгожданный</title>
		<link>http://php.infoniac.ru/mootools-accordion-urok17</link>
		<comments>http://php.infoniac.ru/mootools-accordion-urok17#comments</comments>
		<pubDate>Sat, 12 Nov 2011 12:20:10 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[accordion]]></category>
		<category><![CDATA[украшения mootools]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1075</guid>
		<description><![CDATA[<p>Да, пожалуй продолжим наши Mootools уроки. Продолжим и продвигаться по дополнениям к основной библиотеке Mootools и сегодня рассмотрим работу с одним из самых популярных плагинов Mootools - Accordion.</p>
	<p>Создание простого скрипта с <strong>плагином Accordion для Mootools</strong> довольно просто, но очнь прошу вас читать весь пост внимательно, т.к. создание более сложных скриптов уже может быть довольно сложным.</p>
	<p><em><strong>Итак, поехали!</strong></em></p>]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Основное</h2>
<h3>Делаем аккордион</h3>
<p>Для создание простого аккордиона нужно всего лишь выбрать пары из элементов: заголовок и содержания. Итак, вначале, назначим класс каждому нужному названию и класс элементу с содержанием:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h4</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;togglers&quot;</span>&gt;</span>Заголовок 1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h4</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;elements&quot;</span>&gt;</span>Тут содержание - текст - для заголовка 1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h4</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;togglers&quot;</span>&gt;</span>Заголовок 2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h4</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;elements&quot;</span>&gt;</span>Тут содержание - текст - для заголовка 2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span></pre></div></div>

<p>Теперь можно просто перенести данные классов в переменные и запустить новый объект <strong>accordion</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//Назначаем заголовки, которые будут, по совместительству, и активными областями</span>
	<span style="color: #003366; font-weight: bold;">var</span> zags_demo <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.togglers_1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//Назначаем содержание, которое будет скрыто до активации соответствующего заголовка</span>
	<span style="color: #003366; font-weight: bold;">var</span> content_demo <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.elements_1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//определяем объект accordion</span>
	<span style="color: #006600; font-style: italic;">//и передаем в качестве параметров назначенные выше переменные</span>
	<span style="color: #003366; font-weight: bold;">var</span> DemoAccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>zags_demo<span style="color: #339933;">,</span> content_demo<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>	Такое простое определение объекта даст следующий результат:</p>
<h4 class="togglers_1">Заголовок 1</h4>
<p class="elements_1">Содержание, находящееся под заголовком 1</p>
<h4 class="togglers_1">Заголовок 2</h4>
<p class="elements_1">Содержание, находящееся под заголовком</p>
<h4 class="togglers_1">Заголовок 3</h4>
<p class="elements_1">Содержание, находящееся под заголовком</p>
<h2>Параметры</h2>
<p>Как и при работе со всеми остальными объектами Mootools, у Accordion имеются параметры, которые нужно использовать, если настраиваете что-то большее, чем дефольтный Accordion. Встречайте! Параметры Accordion!</p>
<h3>display</h3>
<p><em>По умолчанию <strong class="hlt">0</strong>.</em></p>
<p>Этот параметр определяет, какой из элементов будет отображаться при загрузке страницы. По умолчанию параметр имеет значение 0, что означает, что при загрузке показывается первый элемент списка. Чтобы установить другой элемент, используйте любое другое значение (целое число). В отличие от параметра show, <strong>display</strong> отобразит элемент с небольшой анимацией.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    display<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>show</h3>
<p><em>По умолчанию <strong class="hlt">0</strong>.</em></p>
<p>Примерно, как и парамер <strong>display</strong>, <strong>show</strong> определяет, какой элемент будет отображаться при загрузке страницы. Однако, в отличии от <strong>display</strong>, он просто показывает, без какой-либо анимации.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    show<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>height</h3>
<p><em>По умолчанию <strong class="hlt">true</strong>.</em></p>
<p>При значении <em>true</em> этот параметр определяет, будет ли контент показан с привязкой к высоте. Это стандартное выполнение эффектов Accordion, показанное немного выше.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    height<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>width</h3>
<p><em>По умолчанию <strong class="hlt">false</strong>.</em></p>
<p>Назначение этого параметра похоже на праметр <strong>height</strong>, но вместо того, чтобы изменять высоту для отображения контента, изменяться будет ширина. При использовании &#8216;width&#8217; со стандартным набором параметров (как показано выше), то расстояние между заголовком останется прежним, в зависимости от высоты контента. Сам же блок с контентом откроется слева направо для отображения контента в этом пространстве. </p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    height<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>opacity</h3>
<p><em>По умолчанию <strong class="hlt">true</strong>.</em></p>
<p>Параметр определяет, будет или не бует приминяться эффект прозрачности при отображаении контента. Эффект этого параметра можно увидеть в примере выше &#8211; мы же там использовали обычное определение объекта, потому там и используются стандартные значения параметров.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    opacity<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>fixedHeight</h3>
<p><em>По умолчанию <strong class="hlt">false</strong>.</em></p>
<p>Используется для установки фиксирвованной высоты. Нужное значение &#8211; число (можно установить на 100, чтобы задать высоту в 100 пикселей). Параметр следует использовать о свойством <strong>overflow</strong> каскадныйх таблиц стилей, когда необходимая фиксированная высота блока меньше, чем естественная высота блока с контентом.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    fixedHeight<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>fixedWidth</h3>
<p><em>По умолчанию <strong class="hlt">false</strong>.</em></p>
<p>Не трудно догадаться, что этот параметр работает также, как и fixedHeight, только работает с шириной блока.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    fixedWidth<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>alwaysHide</h3>
<p><em>По умолчанию <strong class="hlt">false</strong>.</em></p>
<p>Позволяет добавить управление к заголовкам блоков. При установке на true, при клике на заголовок открытого блока, блок закроется без того, чтобы открывать какой-либо другой блок. Смотрите этот параметр в работе в примере ниже.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    alwaysHide<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>События</h2>
<h3>onActive</h3>
<p>Срабатывает, когда подается команда на открытие элемента. В параметрах функции будет управляющий элемент, элемент, чей контент открывается и параметры.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
		onActive<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>toggler<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			toggler.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//элемент управления подсветим зеленым</span>
	    	element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>onBackground</h3>
<p>Срабатывает, когда элемент начинает закрываться. Передает все другие элементы, которые закрываются, но не открываются.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
			onBackground<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>toggler<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		    	toggler.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//элемент управления подсветим красным</span>
		    	element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//элемент закрывающийся подсветим красным</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>onComplete</h3>
<p>Как можно догадаться, это событие срабатывает, по завершению действия. Передает переменную с элементом контента. Возможно существуют лучшие методы получить доступ к контенту, поэтому, если кто-то их знает, пишите <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
			onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>one<span style="color: #339933;">,</span> two<span style="color: #339933;">,</span> three<span style="color: #339933;">,</span> four<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		    	one.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//отмечаем синим</span>
		    	two.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		   		three.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		    	four.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>Методы Accordion-a</h2>
<h3>.addSection();</h3>
<p>Добавляет пару заголовок/контент в объект Accordion. Работает схоже с остальными методами, о которых уже шла речь в наших уроках. К переменной объекта прикрепляем <strong>.addSection</strong>, после чего нужно обратится к id заголовка, id контента и далее нужно указать, какое по счёту положение новая пара должна принять (0 &#8211; начало списка).</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">AccordionObject.<span style="color: #660066;">addSection</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'togglersID'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'elementsID'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Тут стоит заметить, что если таким образом добавлять объекты, то порядковый индекс нового объекта будет не 2, а +1 к индексу последнего элемента. Так, если у вас в списке 4 элемента (0-3), новый элемент, добавленный через <strong>.addSection();</strong>, будет 5-м, с индексом 4, соответственно.</p>
<h3>.display();</h3>
<p>Позволяет открыть определённый элемент по его порядковому номеру в массиве. Так, если бы мы выполнили код метода .addSection();, показанный выше, и после добавления элемента нам бы нужно было открыть добавленный элемент, то с .display(); нельзя использовать тот же самый индекс!</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">AccordionObject.<span style="color: #660066;">display</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// покажет только что добавленный элемент</span></pre></div></div>

<h2>Вкусняшки <em>Accordion</em>-овские</h2>
<p>Ниже можно простестировать всё, о чём шла речь в этом уроке. Accordion &#8211; интересный и полезный плагин к библиотеке Mootools, который я уже несколько раз использовал для придания дополнительного удобства пользования рабочим сайтом. Мне понравилось &#8211; всё просто и очень гибко!</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//определяем переменные массивов с заголовками и элементами с контента</span>
	<span style="color: #003366; font-weight: bold;">var</span> zags <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.zag'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> content <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.content'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//создаем переменнцю объекта</span>
	<span style="color: #006600; font-style: italic;">//с помощью ключевого слова &quot;new&quot;</span>
	<span style="color: #006600; font-style: italic;">//передаем массив с заголовками</span>
	<span style="color: #006600; font-style: italic;">//передаем массив с контентом</span>
	<span style="color: #006600; font-style: italic;">//задаем параметры и события</span>
	<span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>zags<span style="color: #339933;">,</span> content<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//далее определяем, что при загрузке страницы</span>
		<span style="color: #006600; font-style: italic;">//будет показан контент, через метод &quot;show&quot; (по индексу)</span>
		<span style="color: #006600; font-style: italic;">//но БЕЗ каких-либо эффектов - он просто откроется</span>
		<span style="color: #006600; font-style: italic;">//также, обратите внимание, что если используете параметр &quot;fixedHeight,&quot;</span>
		<span style="color: #006600; font-style: italic;">//метод show не сработает при загрузке страницы.</span>
		<span style="color: #006600; font-style: italic;">//&quot;show&quot; имеет приоритет перед &quot;display&quot;</span>
		show<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//при загрузке страницы, эта строчка покажет контент (по индексу),</span>
		<span style="color: #006600; font-style: italic;">//и контент будет открыт с приминением небольшого эффекта</span>
		<span style="color: #006600; font-style: italic;">//как говорилось выше, show в приоритете перед display</span>
		<span style="color: #006600; font-style: italic;">//display: 0,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//имеет дефолтное значение </span>
		<span style="color: #006600; font-style: italic;">//создается вертикальный аккордион</span>
		height <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//далее, создается для горизонтального аккордиона</span>
		<span style="color: #006600; font-style: italic;">//он немного сложнее в использовании из-за необходимости использовать CSS</span>
		width <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//дефолтное значение</span>
		<span style="color: #006600; font-style: italic;">//запустит немного прозрачности в эффект</span>
		opacity<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//дефолтное значение false, но можно указать и числовое значение -</span>
		<span style="color: #006600; font-style: italic;">//закрепит высоту всех контейнеров</span>
		<span style="color: #006600; font-style: italic;">//потребует использование overflow</span>
		<span style="color: #006600; font-style: italic;">//не будет работать при загрузке страницы, если будет использоваться show</span>
		fixedHeight<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//может быть false или целое число</span>
		<span style="color: #006600; font-style: italic;">//схоже с fixedHeight,</span>
		<span style="color: #006600; font-style: italic;">//но используется с горизонтальными аккордионами</span>
		fixedWidth<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//позволяет закрывать открытые элементы</span>
		alwaysHide<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//обычное событие onComplete</span>
		<span style="color: #006600; font-style: italic;">//передаёт переменную с элементом для каждого отдельного элемента с контентом</span>
		onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>var1<span style="color: #339933;">,</span> var2<span style="color: #339933;">,</span> var3<span style="color: #339933;">,</span> var4<span style="color: #339933;">,</span> var5<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			var1.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//синий цвет</span>
			var2.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			var3.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			var4.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">//добавленный элемент</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onComplete'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//это событие сработает, когда элемент будет открываться</span>
		<span style="color: #006600; font-style: italic;">//передаст элемент, управляющий состоянием контента</span>
		<span style="color: #006600; font-style: italic;">//и элемент контента, над которым производится действие</span>
		onActive<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>toggler<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			toggler.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//зеленый</span>
			element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onActive'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//событие срабатывает, когда элемент с контентом начинает закрываться</span>
		<span style="color: #006600; font-style: italic;">//передаст всем остальным элементам</span>
		<span style="color: #006600; font-style: italic;">//закрывающийся элемент или тот, что не открывается</span>
		onBackground<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>toggler<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			toggler.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//красный</span>
			element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onBackground'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'add_section'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//новая часть аккордеона  - это стандартная аккордионная пара</span>
		<span style="color: #006600; font-style: italic;">//переключатель и контент</span>
		<span style="color: #006600; font-style: italic;">//указываем, куда нужно его установить</span>
		AccordionObject.<span style="color: #660066;">addSection</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'addToggler'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'addElement'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// в самое начало</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'display_section'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//определяет, какой объект аккордиона первым отобразиться на странице</span>
		<span style="color: #006600; font-style: italic;">//будет иметь приоритет над аналогичным параметром в разделе options</span>
		AccordionObject.<span style="color: #660066;">display</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Далее, по цветам можно видеть, что происходит с нашими элементами при запуске объекта Accordion.</p>
<div id="onComplete" class="events">onComplete</div>
<div id="onActive" class="events">onActive</div>
<div id="onBackground" class="events">onBackground</div>
<h3 class="zag">Заголовок 1</h3>
<p class="content">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<h3 class="zag">Заголовок 2</h3>
<p class="content">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<h3 class="zag">Заголовок 3</h3>
<p class="content">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<h3 class="zag">Заголовок 4</h3>
<p class="content">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<h3 id="addToggler">Добавочный заголовок</h3>
<p id="addElement">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<p>	Можно попробовать добавить новый элемент с помощью этой кнопки<br />
	<span class="pseudobutton" id="add_section">Добавить пару</span><br />
	<span class="pseudobutton" id="display_section">Показать добавленную пару</span></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootools-accordion-urok17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP: shell_exec(), system(), passthru()</title>
		<link>http://php.infoniac.ru/php-exec-system-passthru</link>
		<comments>http://php.infoniac.ru/php-exec-system-passthru#comments</comments>
		<pubDate>Sun, 18 Sep 2011 11:51:45 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[терминал]]></category>
		<category><![CDATA[юникс-команды]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1049</guid>
		<description><![CDATA[Иногда очень не хватает доступа к терминалу своего веб-сервера, ведь используя команды терминала, можно выполнить некоторые задачи значительно быстрее, чем оперуря другими средствами, даже языками скриптования, как PHP. Но в сегодняшнем посте пойдет речь о том, как, используя PHP можно выполнить команды терминала, чтобы облегчить себе жизнь. ]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Недавно столкнулся с очередной проблемой зипования/архивирования файлов на удаленном сервере. Было поздно, когда я занялся вопросом создания резервной записи файлов сайта. Просто через CyberDuck гонять файлы долго, и не всегда надежно, т.е. нет гарантии, что файлы все перепишуться, что подключение к интернету не подвиснет или ещё что-нибудь не случится. Поэтому решил использовать собственный урок с собственного блога: <a href="http://php.infoniac.ru/php-zip.html">Работа с ZIP средствами PHP</a>.<br />
Как я и говорил, было поздно уже, потому сил после рабочего дня осталось не много, но интерес возбудился, так сказать <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
Вот я и попробовал с помощью немного изменённго собственного примера заархивировать все файлы на серваке и скачать весь сайт ОДНИМ файлом. Получился такой php-скриптик:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$folder</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'../web'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//архивируем всю папку на уровень выше</span>
<span style="color: #000088;">$zip_file</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'archive.zip'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$zip</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ZipArchive<span style="color: #339933;">;</span>
<span style="color: #000088;">$handle</span> <span style="color: #339933;">=</span> <span style="color: #990000;">opendir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$folder</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//открываем нужную папку и создаем ресурс для работы с внутренностями папки</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">open</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$zip_file</span><span style="color: #339933;">,</span> ZipArchive<span style="color: #339933;">::</span><span style="color: #004000;">CREATE</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Не удалось открыть'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">!</span> <span style="color: #339933;">===</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">readdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addFile</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//считываем все файлы в папке и добавляем их по одному в указанный архив</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$file</span>&quot;</span><span style="color: #339933;">.</span>\n<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">closedir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//закрываем ресурс открытой папки</span>
<span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//закрываем работу с zip архивом</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Вот как-то так&#8230; Проблема только в том, что такой скрипт будет работать только с файлами в папке, а вложенные папки будут игнорироваться&#8230; Чтобы добавлялись подпапки, нужно добавлять дополнительную проверку каждого файла, но в итоге, архив будет состоять просто из файлов, без папок, т.к. скрипт будет добавлять папки.<br />
Вот, потихоньку подходим к тематике поста. Наткнулся на форуме <strong>stackoverflow</strong> на <a href="http://stackoverflow.com/questions/1048805/compressing-a-directory-of-files-with-php">пост</a> именно по этой теме, и там я и вспомнил, что когда-то, когда я ещё читал книжки, я изучал работу команды <strong>exec()</strong>. Эта функция выполняет команды сторонник программ-оболочек, т.е. при использовании php-обработчика на UNIX-сервере, через эту команду можно выполнять команды терминала!!! А с помощью команд терминала намного проще заархивировать как файлы, так и папки всего ОДНОЙ строчкой:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-czf</span> backup.tar.gz ..<span style="color: #000000; font-weight: bold;">/</span>web</pre></div></div>

<p>Тут стоит немного внести ясности, что я не владею ни <a href="http://www.2domains.ru" title="Домены RU и РФ всего за 99 рублей">доменом</a> <a href="http://www.infoniac.ru" title="Новости без политики: технологии, психология, факты и истории">infoniac.ru</a> ни площадкой, на которой он хостится, поэтому у меня нет доступа к управлению ни того, ни другого. Поэтому я и не могу просто взять, открыть терминал на хостинге и набрать команду. У меня только ФТП доступ, поэтому приходится как-то выкручиваться.<br />
Вот, в общем, и наткнулся на функции типа shell_exec();, которые способны выполнять команды терминала через среду PHP. Таких команд много и методов работы с ними тоже много. У каждой свои особенности выполнения и использования, но результат примерно одинаковый: выполняются команды оболочки веб-сервера (по крайней мере, в UNIX-системах это работает).<br />
Я сделал <a href="/tests/test_shell.php" rel="nofollow" class="broken_link">тестовый файл</a> на сервере, который показывает, как некоторые из этих команд работают, чтобы можно убедиться в работоспособности этих функций. Вот код файла:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;strong&gt;system(<span style="color: #000099; font-weight: bold;">\&quot;</span>ls<span style="color: #000099; font-weight: bold;">\&quot;</span>):&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;lt;pre&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">system</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ls'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &amp;lt;/pre&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;&lt;strong&gt;passthru(<span style="color: #000099; font-weight: bold;">\&quot;</span>ls<span style="color: #000099; font-weight: bold;">\&quot;</span>):&lt;/strong&gt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;lt;pre&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">passthru</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ls'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;lt;/pre&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;&lt;strong&gt;echo shell_exec(<span style="color: #000099; font-weight: bold;">\&quot;</span>ls<span style="color: #000099; font-weight: bold;">\&quot;</span>):&lt;/strong&gt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;lt;pre&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">shell_exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ls'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;lt;/pre&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;&lt;strong&gt;echo exec(<span style="color: #000099; font-weight: bold;">\&quot;</span>ls<span style="color: #000099; font-weight: bold;">\&quot;</span>):&lt;/strong&gt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;lt;pre&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ls'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;lt;/pre&gt;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>
?&gt;</span></pre></div></div>

<p>Что-то вордпресс и плагин WP-Syntax не способны правильно обработать теги &lt;pre> в коде РНР, который я привожу в пример, потому, публикую как есть.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/php-exec-system-passthru/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Выйграй MacBook Air 11&#8221; Осталось всего 25 штук!!!</title>
		<link>http://php.infoniac.ru/macbook-air-za-3shtuki.html</link>
		<comments>http://php.infoniac.ru/macbook-air-za-3shtuki.html#comments</comments>
		<pubDate>Mon, 25 Jul 2011 07:31:10 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macBook air]]></category>
		<category><![CDATA[огрызок]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1043</guid>
		<description><![CDATA[Есть у меня грешок: люблю технику Apple. Потому предлагаю всем регистраироваться в гонке за MacBookAir!]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p><a href="http://mac.utinet.ru/?u=29171" title="Регистрируйся и включайся в борьбу за мак"><img src="http://mac.utinet.ru/images/utinet.png" style="float:left; margin:5px 5px 5px 0" alt="магазин Utinet"/></a>Да-да, выиграть то его можно, только для этого нужно иметь некую сноровку, смекалку, скорость ума, безработицу (или свой бизнес) и отсутствие жены/девушки или чтобы она на крайняк разделяла твой интересы, чтобы иметь возможность срываться с места в любое время суток на выполнение задания. Чтобы получить возможность участвовать в этих розыгрышах MacBook-a, нужно зарегистрироваться на сайте <a href="" target="_blank">3shtuki.ru</a>, и вливаться в движуху <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Удачи всем!!</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/macbook-air-za-3shtuki.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Жизнь &#8220;пресная&#8221; пошла&#8230;</title>
		<link>http://php.infoniac.ru/presnaja-zhizn.html</link>
		<comments>http://php.infoniac.ru/presnaja-zhizn.html#comments</comments>
		<pubDate>Thu, 21 Jul 2011 18:34:22 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[за жизнь]]></category>
		<category><![CDATA[оффтоп]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1036</guid>
		<description><![CDATA[Что-то идей совсем мало, а времени нет дописать то, что наметил уже давно. Москва съедает жутко много времени&#8230; или я просто люблю спать поночам, по этому особо не успеваю ничего&#8230; На работе дали задание в виде перевода инструкции на принтер&#8230; Жуткое зрелище, как я это делаю: в сон тянет, т.к. вообще не завораживает действие, не [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Что-то идей совсем мало, а времени нет дописать то, что наметил уже давно. Москва съедает жутко много времени&#8230; или я просто люблю спать поночам, по этому особо не успеваю ничего&#8230;<br />
На работе дали задание в виде перевода инструкции на принтер&#8230; Жуткое зрелище, как я это делаю: в сон тянет, т.к. вообще не завораживает действие, не интересно, хоть убей. Ведь именно на работе я раньше черпал свои мысли и идеи по прикрутке новых разных функций к сайтам, которыми я заведую, но, т.к. последние пару месяцев я только перевожу и верстаю в InDesigne мануал, у меня контактов с интернетом почти нет. Когда появлялись мысли каких-нибудь новшеств для сайтов, я изучал доступные материалы, чтобы воплотить идею в жизнь. Идеи у меня, конечно, совсем не о создании своей уникальной платежной онлайн системы, а просто, например, создание карты на основе API Yandex.Maps, чтобы наши клиенты могли сразу у нас на сайт проложить маршрут к нам в офис или на склад. Такие мысли мне под силу ещё:), а что-то более глобальное, к сожелнию, умишком не вышел&#8230;<br />
В общем, мысли никакие по интересующей меня тематике в голову и не лезут. Хотя, конечно, нужно доделать уроки по <a href="http://php.infoniac.ru/category/mootools/">Mootools</a>, но пока и до этого руки не доходят&#8230; Всё, жена снова выкалывается, что я у компа много времени провожу, и так глаза красные.<br />
Блог что-то барахлит: не хочет автоматом обновлять плагины, постоянно слетает&#8230;, и то ли плагин Contact Form 7 глючит, толи пота барахлит&#8230; Чего не так то?</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/presnaja-zhizn.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Об изображениях в электронном письме</title>
		<link>http://php.infoniac.ru/pro-izobrazhenia-v-elektronnom-pisme.html</link>
		<comments>http://php.infoniac.ru/pro-izobrazhenia-v-elektronnom-pisme.html#comments</comments>
		<pubDate>Thu, 28 Apr 2011 13:00:01 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[изображения]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[электронная почта]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=990</guid>
		<description><![CDATA[Недавно получил задание: разобраться, как можно надёжнее всего вставить изображение в тело электронного письма так, чтобы у большинства получателей, вне зависимости от используемого почтового клиента, эти изображения отображались. Ковырялся, вроде как просто вставить &#60;img src="путь" alt="" /> более или менее справляется с задачей, но а как быть, когда изображение нигде не размещено и пути к [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Недавно получил задание: разобраться, как можно надёжнее всего вставить изображение в тело электронного письма так, чтобы у большинства получателей, вне зависимости от используемого почтового клиента, эти изображения отображались.<span id="more-990"></span><br />
Ковырялся, вроде как просто вставить <code>&lt;img src="путь" alt="" /></code> более или менее справляется с задачей, но а как быть, когда изображение нигде не размещено и пути к нему не существует. И тут, как по волшебству, меня во-первых осенило! Когда <a href="http://php.infoniac.ru/proglammera-dolgo-nebylo.html">ходил на курсы по кросс-браузерной верстке</a>, препод вскользь упомянул о том, что все (а может не все, а только особое их содержимое, вроде картинок) электронные письма кодируются в <strong>base64</strong>, а потом показал пример, закодировав изображение этим алгоритмом, а потом насильно вставив то, что получилось в атрибут <em>src</em> тега <strong>img</strong>. А во-вторых, наткнулся на тему со скриптом PHP, который создает и отправляет именно такие письма, т.е. с изображениями, которые не являются вложениями и которые нельзя сохранить на диск (т.е. это элементы дизайна, а не вложения, потому и нафиг никому не надо их сохранять на диск). Тут же попробовал отправить изображение в base64, но пришел текст <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
Сейчас, к сожалению, нет времени разбираться (всё бьюсь на кроссбраузерной версткой пока первого и единственного сайта), потому просто сохраню себе ссылку с форума, а они может, ещё кому-нибудь пригодятся:<br />
<a href="http://softtime.ru/forum/read.php?id_forum=1&#038;id_theme=60002" title="Отправка письма в HTML-формате со встроенными изображениями">Отправка письма в HTML-формате со встроенными изображениями</a></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/pro-izobrazhenia-v-elektronnom-pisme.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

