<?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 &#187; PHP</title>
	<atom:link href="http://php.infoniac.ru/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://php.infoniac.ru</link>
	<description>Уроки программирования от новичка новичкам</description>
	<lastBuildDate>Tue, 20 Mar 2012 18:36:33 +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>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 --><div style="text-align:center;width:100%;margin:10px 0px 10px 0px;"><div style="margin:auto;"><script type="text/javascript"><!--
google_ad_client = "pub-8205915997794532";
/* 728x90, создано 08.12.10 */
google_ad_slot = "3730215141";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></div><div style="width:100%;min-width:100%;"><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>
</div><!-- 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>Об изображениях в электронном письме</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>
		<item>
		<title>Мои достижения в PHP</title>
		<link>http://php.infoniac.ru/moi-dostizheniya-v-php.html</link>
		<comments>http://php.infoniac.ru/moi-dostizheniya-v-php.html#comments</comments>
		<pubDate>Wed, 20 Apr 2011 13:50:13 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[веб-программирование]]></category>
		<category><![CDATA[достижения]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=975</guid>
		<description><![CDATA[Вот ещё один пост, который я выкладываю, в принципе, на всеобщее рассмотрение и критику, но, больше, для себя. Частенько вспоминаю, что, что-то подобное я уже делал, но не могу вспомнить где и как.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Класс установки ссылок смежных материалов</h2>
<p>Этот класс я соорудил для сайта на работе, для автоматической установки ссылок на следующую и предыдущую новости. Вроде нормально получилось</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Controls <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$Next</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Следующая новость'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$Prev</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Предыдущая новость'</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//метод для определения ID первой и последней новостей</span>
	<span style="color: #000000; font-weight: bold;">function</span> GetPoles <span style="color: #009900;">&#40;</span><span style="color: #000088;">$way</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'DESC'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$q</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT `id` FROM `news` ORDER BY `id` &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$way</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; LIMIT 1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_result</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">mysql_error</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: #666666; font-style: italic;">//собственно, метод, который определяет действительный ID смежного материала</span>
	<span style="color: #000000; font-weight: bold;">function</span> FindID <span style="color: #009900;">&#40;</span><span style="color: #000088;">$currentID</span><span style="color: #339933;">,</span> <span style="color: #000088;">$flag</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$flag</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$id_val</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$currentID</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #000088;">$id_val</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$currentID</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$q</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT `id` FROM `news` WHERE `id` = &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$id_val</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$currentID</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetPoles</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ASC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id_val</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$currentID</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetPoles</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DESC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id_val</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id_val</span><span style="color: #339933;">,</span> <span style="color: #000088;">$flag</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: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_result</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</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: #b1b100;">else</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">mysql_error</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: #666666; font-style: italic;">//конструктор HTML</span>
	<span style="color: #000000; font-weight: bold;">function</span> putControls<span style="color: #009900;">&#40;</span><span style="color: #000088;">$ID</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ID</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetPoles</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DESC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;span class=&quot;next&quot;&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>news_1_&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ID</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.htm<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&amp;lt;&amp;lt;&amp;lt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Next</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/a&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/span&gt;'</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ID</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetPoles</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ASC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;span class=&quot;prev&quot;&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>news_1_&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ID</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.htm<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Prev</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/span&gt;'</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Тут ещё был класс для подключения к базе данных, но это уже совсем просто. Блин, нравится мне программировать (громко как звучит <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), аж на работу интересно приходить! Представляете, насколько интересно <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> !</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/moi-dostizheniya-v-php.html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Фичи для PHP</title>
		<link>http://php.infoniac.ru/fichi-dlea-php.html</link>
		<comments>http://php.infoniac.ru/fichi-dlea-php.html#comments</comments>
		<pubDate>Wed, 20 Apr 2011 11:24:13 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[opendir]]></category>
		<category><![CDATA[readdir]]></category>
		<category><![CDATA[while]]></category>
		<category><![CDATA[чтение всех файлов в папке]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=962</guid>
		<description><![CDATA[Конструкция while для чтения директорий и файлов Известно дело, что часто нужно в PHP функциях выполнять некоторые действия энное количество раз. Тогда всё понятно: определяется переменная, ей задается целое число, выполняется код, число увеличивается/уменьшается на единицу. Конструкция while частенько используется для пробежки по всем файлам и вложенным папкам родительской папки, но для обозначения условия конструкции, [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Конструкция while для чтения директорий и файлов</h2>
<p>Известно дело, что часто нужно в PHP функциях выполнять некоторые действия энное количество раз. Тогда всё понятно: определяется переменная, ей задается целое число, выполняется код, число увеличивается/уменьшается на единицу. Конструкция while частенько используется для пробежки по всем файлам и вложенным папкам родительской папки, но для обозначения условия конструкции, используется не совсем стандартная конструкция (простите за тавтологию):</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;">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: #009900;">&#40;</span><span style="color: #000088;">$item</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: #666666; font-style: italic;">//проверка, не является ли текущая позиция в папке выходом в корневую или родительскую папку</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$item</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'.'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$item</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'..'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">/*сюда выполняемый код*/</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>где <strong>$item</strong> &#8211; это переменная, которая жива только в цикле while, и которая обозначает текущий объект в папке, <strong>readdir()</strong> &#8211; функция PHP для чтения содержимого папки, <strong>$handle</strong> &#8211; переменная-ресурс, определяющая текущую папку, которую нужно было определить заранее функцией <strong>opendir(</strong><em>&#8216;название папки&#8217;</em><strong>)</strong>.<br />
Я эту заметку, составил больше для себя (вскоре, я перестану повторять это <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), но, может кому-нибудь тоже пригодится.</p>
<h2>Особенность рекурсивных функций</h2>
<p>Пытался на работе написать класс для отображения ссылок на смежные материалы.<br />
<strong>Суть</strong>: получить ID текущего материала, приплюсовать единицу, минусовать единицу, составить ссылку.<br />
<strong>Примечание</strong>: Ведь бывает так, что материал является первым или последним, а также, что материала с <em>ID=текущий ID минус/плюс 1</em> нет уже (удалили когда-то), потому нужно просто запустить ещё раз эту же функцию с уже новым значением. Сколько же я бился, пока юное дарование программирования не подсказал мне, что нужно поставить return при каждом вызове функции в самой себе, иначе возврата не будет.<br />
Обойдусь без примеров, ничего в голову не лезет. Главное помнить, что если функция заканчивается строчкой <strong>return ЗНАЧЕНИЕ</strong>, то при рекурсивном вызове функции, нужно перед этим вызовом ставить также <em>return</em>, т.е. <strong>return НАЗВАНИЕ_ФУНКЦИИ(ПАРАМЕТРЫ)</strong></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/fichi-dlea-php.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с ZIP средствами PHP</title>
		<link>http://php.infoniac.ru/php-zip.html</link>
		<comments>http://php.infoniac.ru/php-zip.html#comments</comments>
		<pubDate>Mon, 18 Oct 2010 06:10:00 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[server side scriping]]></category>
		<category><![CDATA[zip]]></category>
		<category><![CDATA[серверные скрипты]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=804</guid>
		<description><![CDATA[<p>Я давно знаю, что PHP отлично работает с архивами ZIP. Я знал, что есть специальные библиотеки, некоторые платные, некоторые бесплатные. И вот, настал тот день, настал тот час, когда я решил попробовать, как именно работает PHP с архивами ZIP.</p>]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Если кому не известно или не понятно, для чего нужно использовать PHP инструменты для работы с архивами, могу привести несколько примеров. Архивируя информацию &#8220;налету&#8221;, можно сэкономить немного трафика как серверу, так и пользователю, особенно когда речь идет о большом количестве текстовой информации, как например скачивание электронных книг, резервных копий баз данных, отчетов, CSV файлов и т.д. Другой пример, который мне приходит в голову &#8211; это хранение информации для экономии места на удаленном сервере. Конечно, целесообразнее всего архивировать данные, только если они действительно не часто используются и использовать PHP для распаковки архива, когда это потребуется, непосредственно на сервере. Еще, часто требуется залить огромное количество маленький файлов на сервер, а это длится ОЙ как долго. <strong>Известный факт</strong>: закачать 1 файл размером в 1000000 байт намного быстрее, чем 1000000 файлов по одному байту. PHP в помощь! Запаковываем файлы в архив, заливаем на сервер, используя скрипт, распаковываем архив. Voil&aacute;!</p>
<p>Ну, в общем, дошли у меня руки до тестдрайва зиповского инструментария в PHP. Как выяснилось, за работу с архивами отвечают несколько PHP библиотек. Я попробовал zlib &#8211; она встроена в стандартный архив PHP, доступный <a href="http://ru.php.net/downloads.php">тут</a>.</p> 
<h2>А поддерживает ли твоя сборка PHP работу с архивами</h2>
<p>Перед тем, как начать работать с архивами, нужно вначале убедиться, что твоя сборка PHP поддерживает работу с ZIP архивами. Для этого, в выдаче функции <strong>phpinfo();</strong> нужно найти категорию <strong>zlib</strong>. Если таковая есть, значит и есть работа с архивами. Помимо <strong>zlib</strong>, в выдаче есть ещё какая-то категория <strong>zip</strong>, чьё предназначение я пока не понял.</p>
<h2>ZipArchive</h2>
<p>Библиотека <strong>zlib</strong> работает с архивами через объект ZipArchive. Далее показано, как разархивировать архив <strong>ZIP</strong>.</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: #666666; font-style: italic;">//создаем новый объект ZipArchive </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: #666666; font-style: italic;">//пытаемся открыть архив</span>
<span style="color: #666666; font-style: italic;">//если архив открывается, переменная $res принимает значение TRUE</span>
<span style="color: #666666; font-style: italic;">//если открыть не получится, то переменной передается код ошибки</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: #0000ff;">'test1.zip'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">/*проверка на возможность открытия архива:
обратите внимание, что проверка идет через оператор идентичности '=== TRUE',
т.е. если переменная будет равна 0 (нулю), тест не будет пройден
*/</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: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//обозначаем папку, в которую будет производится разархивирование </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;">extractTo</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test'</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;">//если архив НЕ открылся</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Не получилось из-за ошибки #'</span><span style="color: #339933;">.</span><span style="color: #000088;">$res</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// где $res - код ошибки</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>



<p>Вот так незамысловато можно разархивировать архив непосредственно на сервере. Очень удобно. И код нельзя назвать объёмным.</p>
<h2>Создание ZIP архивов</h2>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #666666; font-style: italic;">//снова создаем новый объект ZipArchive</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: #666666; font-style: italic;">//снова используем метод open(), но теперь используем ключ ZipArchive::CREATE</span>
<span style="color: #666666; font-style: italic;">//который говорит, что архив нужно создать</span>
<span style="color: #666666; font-style: italic;">//а первым параметром передаем название архива] </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: #0000ff;">'test1.zip'</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: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</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: #666666; font-style: italic;">//вот это интересная функция, которая, использует содержимое файла</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;">addFromString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test.txt'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'строка-содержимое файла'</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;">addFile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'file.fl'</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: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Ошибка №'</span><span style="color: #339933;">.</span><span style="color: #000088;">$res</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>



<p>Вот примерный список ошибок и их числовых значений, если вдруг кому понадобится:</p>
ZIPARCHIVE::ER_EXISTS &#8211; 10<br />
ZIPARCHIVE::ER_INCONS &#8211; 21<br />
ZIPARCHIVE::ER_INVAL &#8211; 18<br />
ZIPARCHIVE::ER_MEMORY &#8211; 14<br />
ZIPARCHIVE::ER_NOENT &#8211; 9<br />
ZIPARCHIVE::ER_NOZIP &#8211; 19<br />
ZIPARCHIVE::ER_OPEN &#8211; 11<br />
ZIPARCHIVE::ER_READ &#8211; 5<br />
ZIPARCHIVE::ER_SEEK &#8211; 4<br />
<p>Ну вот и всё! Этого вполне должно хватить каждому, чтобы смочь заархивировать или разархивировать ZIP архив на сервере с помощью PHP. Спасибо за внимание, всем удачи!</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/php-zip.html/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Как правильно читать файлы с помощью PHP?</title>
		<link>http://php.infoniac.ru/php/fwrite.html</link>
		<comments>http://php.infoniac.ru/php/fwrite.html#comments</comments>
		<pubDate>Sun, 05 Oct 2008 13:21:17 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[файл]]></category>
		<category><![CDATA[читать файлы]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=6</guid>
		<description><![CDATA[Как правильно читать файлы с помощью PHP? Этим вопросом задавался любой уважающий себя web-coder. Базовыми функциями для работы с файлами, являются: fopen, fclose и feof; функции чтения: fgets, fgetss и fscanf. Для упрощения работ с файлами был составлен класс. Составляя новый код, каждый раз при возвращении к данной проблеме &#8211; нужно просто подключить файл с [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Как правильно читать файлы с помощью PHP? Этим вопросом задавался любой уважающий себя web-coder.  </p>
<p>Базовыми функциями для работы с файлами, являются: <strong>fopen</strong>, <strong>fclose </strong>и <strong>feof</strong>; функции чтения: <strong>fgets</strong>, <strong>fgetss</strong> и <strong>fscanf</strong>.</p>
<p>Для упрощения работ с файлами был составлен класс.  Составляя новый код, каждый раз при возвращении к данной проблеме &#8211; нужно просто подключить файл с этим классом, что даёт возможность использовать минимальное количество времени и кода для решения задач обработки файлов.</p>
<p><span id="more-6"></span></p>
<p><strong>Листинг 1. Пример класса для работы с файлами:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>?
<span style="color: #000000; font-weight: bold;">class</span> writefile <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$fp</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$patch</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">function</span> close<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>	<span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">function</span> write<span style="color: #009900;">&#40;</span><span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #339933;">,</span><span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">function</span> read<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$fs</span><span style="color: #339933;">=</span><span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">patch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$fs</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot; <span style="color: #006699; font-weight: bold;">{$this-&gt;patch}</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">fread</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #339933;">,</span><span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">patch</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: #000000; font-weight: bold;">function</span> open<span style="color: #009900;">&#40;</span><span style="color: #000088;">$patch</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">patch</span><span style="color: #339933;">=</span> <span style="color: #000088;">$patch</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$patch</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span>w<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: #000000; font-weight: bold;">function</span> open_r<span style="color: #009900;">&#40;</span><span style="color: #000088;">$patch</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">patch</span><span style="color: #339933;">=</span> <span style="color: #000088;">$patch</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$patch</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span>r<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: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>strong<span style="color: #339933;">&gt;</span>Пример использования класса для работы с файлами<span style="color: #339933;">:&lt;/</span>strong<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>?
<span style="color: #339933;">...</span>
<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span>classes<span style="color: #339933;">/</span>writefile<span style="color: #339933;">.</span>php<span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// подключаем класс</span>
<span style="color: #339933;">...</span>
<span style="color: #000088;">$writefile</span><span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> writefile<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$writefile</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">open_r</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #990000;">mail</span><span style="color: #339933;">.</span>tpl<span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// открываем для чтения</span>
<span style="color: #000088;">$mailTpl</span><span style="color: #339933;">=</span> <span style="color: #000088;">$writefile</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">read</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;">// возвращаем содержимое файла</span>
<span style="color: #339933;">...</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/php/fwrite.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

