<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Лукин Леонид - php</title>
    <link>http://blog.phpworld.ru/</link>
    <description>Web Log (блог / живой журнал) на задворках PHP World.ru</description>
    <dc:language>ru</dc:language>
    
    <generator>Serendipity 0.9.1 - http://www.s9y.org/</generator>
    <pubDate>Fri, 02 Apr 2010 11:21:01 GMT</pubDate>

    <image>
        <url>http://blog.phpworld.ru/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Лукин Леонид - php - Web Log (блог / живой журнал) на задворках PHP World.ru</title>
        <link>http://blog.phpworld.ru/</link>
        <width>100</width>
        <height>21</height>
    </image>
<item>
    <title>Конференция по Zend Framework в Санкт-Петербурге</title>
    <link>http://blog.phpworld.ru/archives/337-KonferenciJa_po_Zend_Framework_v_Sankt-Peterburge.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/337-KonferenciJa_po_Zend_Framework_v_Sankt-Peterburge.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=337</wfw:comment>
    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=337</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
&lt;img width=&quot;153&quot; height=&quot;138&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.phpworld.ru/uploads/blogimages/ZFConflogo.jpg&quot; alt=&quot;&quot;  /&gt;&lt;br /&gt;
На днях мы c &lt;a href=&quot;http://seligoroff.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Игорем Селивановым&lt;/a&gt; посетили первую не только в России, но и во всем мире, можно даже сказать первую во всей zend’овской истории конференцию по Zend Framework, которая состоялась в Санкт-Петербурге. Конференция была однодневной, проходила в субботу и ожидался аншлаг, который, собственно, и имел место быть.&lt;br /&gt;
&lt;br /&gt;
Несколько сотен человек собрались для того, чтобы послушать доклады, обсудить между собой перспективы развития фреймворка, познакомиться друг с другом лично – ведь многие знали друг друга только заочно. Стоит заметить, что пока сообщество разработчиков на Zend Framework в России не такое большое. Хотя… все еще впереди…&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;serendipity_imageComment_right&quot; style=&quot;width: 300px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;img width=&quot;300&quot; height=&quot;178&quot; src=&quot;http://blog.phpworld.ru/uploads/blogimages/IMAGE_013.jpg&quot; alt=&quot;&quot;  /&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Александр Веремьев на ZFConf 2010&lt;/div&gt;&lt;/div&gt;Итак, по порядку… Первый доклад на конференции пришелся на того человека, ради знакомства с которым уже и достаточно было ехать за сотни километров. Я говорю об Александре Веремьеве, который является одним из трех членов Zend Framework Core, другими словами с кодом которого в ZF мы сталкиваемся сплошь и рядом. Саша обстоятельно рассказал о жизненном цикле «предложений», возникающих в процессе развития Zend Framework’a, дал несколько ценный рекомендация о том, как правильно подавать такие предложения и как поспособствовать его скорейшему рассмотрению и реализации, ответил на массу интересных вопросов. &lt;br /&gt;
Впечатление о конференции складывалось положительное, тем более что остальные темы были крайне интересными. И тут… все неожиданно поменялось. А произошло вот что – уровень всех, справедливости ради следует заметить, что все же не всех, но многих последующих докладов был ошеломляющи низок. Складывалось впечатление, что либо доклады навязывались случайным людям или, что скорее всего, сами докладчики считали свои доклады очень интересными, но было видно, что ни опыта презентации материала, ни даже опыта участия в нормальных конференциях у них не было. У многих не было и уверенных знаний о том, что они говорили. Уже то, что как правильно произнести многие важные термины некоторые докладчики не были в курсе – говорит о том, что они о них только где-то читали, не более. И пусть бы они говорили про php, что это ПэХаПэ, а http – это ХаТэТэПэ – с этим еще можно было мериться. Но иногда встречались такие перлы – что приходилось переспрашивать соседей о том, что сейчас имел докладчик в виду. Также очень часто аудитория разражалась смехом после очередного заявления с &quot;трибуны&quot;, но большинство докладчиков относили это на счет своего обаяния и чувства юмора. &lt;br /&gt;
&lt;br /&gt;
&lt;img width=&quot;178&quot; height=&quot;300&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.phpworld.ru/uploads/blogimages/IMAGE_031.jpg&quot; alt=&quot;&quot;  /&gt;Нет, не берусь критиковать сами доклады – есть возможность просмотреть их в живой трансляции на сайте &lt;a href=&quot;http://www.zfconf.ru&quot; target=&quot;_blank&quot;&gt;www.zfconf.ru&lt;/a&gt; (особенно рекомендую для ощущения момента посмотреть 2 доклада Степана Танасийчука), а также потом, я надеюсь, скачать сами презентации. &lt;br /&gt;
Просто хочу отметить самые интересные, на мой взгляд, выступления. Итак, как я уже сказал – Саша Веремьев и не мог по определению выступить хуже, чем на 5 с плюсом. Александр Махомет – очень хороший доклад по производительности Zend Framework. Многим также понравился провокационный доклад Анатолия Ларина с критикой фреймворка в ретроспективе использования его для проекта E-Штаб. Хотя большинство не согласилось с выводами Анатолия, но доклад был сделан очень профессионально, был крайне полезен, интересен, заставил многих посмотреть на фреймворк в новом свете нарастающей конкуренции. &lt;br /&gt;
Естественно, что центральным докладом стал доклад Надежды Блиновой о том, что нового будет в Zend Framework 2.0. Понятно, что основная часть материала принадлежала тому же Веремьеву, под патронажем которого доклад создавался, да и на вопросы из зала пришлось отвечать ему. Тем не менее – доклад был очень интересным, полезным. Многих сильно заставил задуматься. Да, об отсутствии обратной совместимости знали многие. Но чтоб в таких объемах. Кроме этого, пока некоторые новшества кажутся не настолько актуальными, точнее многие таковой не видели. Надеемся, что разработчики Zend Framework все же знают, что делают, и игра в конечном итоге будет стоить свеч (похоже, что свечи будут геморроидальными). &lt;br /&gt;
&lt;br /&gt;
Для себя я отметил следующие новшества:&lt;ul&gt;&lt;li&gt;ZF 2.0 будет работать только с php 5.3+ (а оно и понятно – все на namespaces)&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Вводится унифицированный конструктор&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Нас ожидает новая реализация MVC (дышим глубоко и спокойно)&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Маршруты будем строить через конфигурацию (Ура!)&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;масса всего остального...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
Вот такая выдалась конференция. Однако, все же она есть большой прорыв. Россия показала большой интерес к Zend Framework’у и Zend это авансом оценил (а иначе бы Веремьев не был на конференции с докладом). А потому огромное спасибо нужно сказать организаторам конференции – питерской компании Wizartech. Пусть первый блин, как всегда, получился комом. Но это только начало. Уровень конференции будет расти, она станет популярнее, докладчики будут отбираться более тщательно и все пойдет как нужно. Главное, чтобы этот первый блин не произвел на Сашу Веремьева такое гнетущее впечатление, что Zend будет вынужден махнуть на нас рукой, как на бесперспективный регион. Если этого не произойдет – все будет ок и будем считать, что все обошлось в этот раз. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;serendipity_imageComment_center&quot; style=&quot;width: 300px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;img width=&quot;300&quot; height=&quot;178&quot; src=&quot;http://blog.phpworld.ru/uploads/blogimages/IMAGE_015.jpg&quot; alt=&quot;&quot;  /&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Вот такая погода была в Питере. А в Москве уже совсем тепло!!!&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
Замечу интересный момент – в кулуарах уже анонсировалась следующая конференция по Zend Framework, которая с большой долей вероятности будет в Харькове в сентябре еще этого года. Ее организацию обещал взять на себя небезызвестный в узких кругах Антон Шевчук. У меня подозрение, что он сумеет извлечь все уроки этой конференции и проведет вторую на приемлемо высоком уровне. Тем более, что многие уже автоматом пообещали приехать.     </content:encoded>
                
    <pubDate>Sun, 28 Mar 2010 16:25:20 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/337-guid.html</guid>
    </item>
<item>
    <title>Связка PHP-скрипта с Twitter для отправки сообщения без cURL</title>
    <link>http://blog.phpworld.ru/archives/323-SvJazka_PHP-skripta_s_Twitter_dlJa_otpravki_soobweniJa_bez_cURL.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/323-SvJazka_PHP-skripta_s_Twitter_dlJa_otpravki_soobweniJa_bez_cURL.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=323</wfw:comment>
    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=323</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
Итак, хотелось бы с php-сайта отправлять сообщения в Twitter?&lt;br /&gt;
Собственно все очень просто:&lt;pre style=&quot;font-size: 12px&quot;&gt;&amp;lt;?php&lt;br /&gt;
// Сообщение&lt;br /&gt;
$message = 'Тестовое сообщение в Twitter из php';&lt;br /&gt;
// Учетные данные Twitter'a&lt;br /&gt;
$login = 'login';&lt;br /&gt;
$password = 'password';&lt;br /&gt;
	&lt;br /&gt;
if ($message) {&lt;br /&gt;
	// Подготовка запроса в Twitter&lt;br /&gt;
	$output = &quot;POST http://twitter.com/statuses/update.json HTTP/1.1\r\n&quot;&lt;br /&gt;
			  .&quot;Host: twitter.com\r\n&quot;&lt;br /&gt;
			  .&quot;Authorization: Basic &quot;.base64_encode ($login . ':' . $password).&quot;\r\n&quot;&lt;br /&gt;
			  .&quot;Content-type: application/x-www-form-urlencoded\r\n&quot;&lt;br /&gt;
		 	  .&quot;Content-length: &quot; . strlen (&quot;status=$message&quot;) . &quot;\r\n&quot;&lt;br /&gt;
		 	  .&quot;Connection: Close\r\n\r\n&quot;&lt;br /&gt;
		  	  .&quot;status=$message&quot;;&lt;br /&gt;
	// Установка соединения с Twitter.com&lt;br /&gt;
	$fp = fsockopen ('twitter.com', 80);&lt;br /&gt;
	// Отсылка запроса&lt;br /&gt;
	fwrite ($fp, $output);&lt;br /&gt;
	// Закрытие соединения&lt;br /&gt;
	fclose ($fp); &lt;br /&gt;
}&lt;br /&gt;
?&gt;&lt;/pre&gt;&lt;br /&gt;
Как и что требуется доделывать под свои нужны:&lt;br /&gt;
  1. Указать логин и пароль своей учетной записи для Twitter'a&lt;br /&gt;
  2. Организовать передачу в переменню $message текущего сообщения - масса вариантов в зависимости от своей задачи.&lt;br /&gt;
&lt;br /&gt;
P.S. Особенность этого php-сценария - дополнительные модули PHP не используются.    </content:encoded>
                
    <pubDate>Fri, 28 Aug 2009 14:38:03 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/323-guid.html</guid>
    </item>
<item>
    <title>Удачные имена методов – в копилку php-программиста</title>
    <link>http://blog.phpworld.ru/archives/302-Udachnye_imena_metodov__v_kopilku_php-programmista.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/302-Udachnye_imena_metodov__v_kopilku_php-programmista.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=302</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=302</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
В книге С.Макконнелла &quot;Совершенный код&quot; (позже я хочу написать о ней подробно) приведены интересные рекомендации по именованиям методов, функций и процедур. &lt;br /&gt;
&lt;br /&gt;
Вот некоторые наиболее полезные советы в моей адаптации терминологии к PHP (а к чему же еще).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Описывайте в названии ВСЕ действия, которые выполняет метод&lt;/b&gt;. К примеру, если метод создает отчет о покупках в электронном магазине за день и отправляет его по email владельцам сайта, то он не должен называться просто createDailyReport(), а должен называться createDailyReportAndSendItByEmail(). Не нравится такое длинное и несуразное название? Вывод – нужно создавать красивые методы, выполняющие только одну задачу и не имеющие побочных действий. Таким образом, когда метод получает дикое название – подумайте о его переделке. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Не ограничивайте длину названия метода искусственно&lt;/b&gt;. Известно, что оптимальная длина названия переменной – 7-9 символов. Но кто сказал, что и названия методов должны быть такой же длины? Ведь методы гораздо сложнее переменных. Помните – главная задача имени метода – как можно более ясное описание сути метода, а потому длина имени вообще не должна иметь значения. И возможности автоподстановки IDE вам в помощь. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;При именовании функции – используйте описание возвращаемого значения&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;При именовании процедуры – используйте глагол, описывающий действие, и дополняйте его названием объекта, над которым это действие выполняется&lt;/b&gt;. Естественно, данное правило не нужно применять для именования методов классов. Но если речь идет о простой процедуре – не достаточно сказать, что она делает, не упомянув объект, с которым работает процедура. Правильные названия – checkOrder(), а не просто check(), так как совсем не понятно, что именно подвергается проверке. &lt;br /&gt;
&lt;br /&gt;
И еще. На последней московской конференции по PHP организаторами был разыгран приз. Победить должен был тот участник, кто привел бы пример самого плохого подхода к программированию на php, с которым он когда-либо сталкивался в своей практике. Было озвучено много уморительных &quot;ляпов&quot;. Однако уверен, что Макконнелл бы выиграл этот приз, если бы привел тот пример, который я вычитал у него в книге. Пример касается подхода к организации кода в методы. Приведу его дословно.&lt;br /&gt;
&lt;div style=&quot;font-style: italic; margin: 20px&quot;&gt;&quot;Один разработчик написал весь свой код в форме единственного объемного метода. Затем он разбил код на фрагменты по 15 строк и создал методы Part1, Part2 и т.д. После этого он создал один высокоуровневый метод, вызывающий каждую часть кода. Подобный способ создания и именования методов глуп до невозможности.&quot;&lt;/div&gt;Итак, нет предела совершенству. Но, похоже, предел несовершенства в программировании найден!    </content:encoded>
                
    <pubDate>Thu, 12 Feb 2009 20:34:25 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/302-guid.html</guid>
    </item>
<item>
    <title>Бесплатный движок социальной сети на php</title>
    <link>http://blog.phpworld.ru/archives/286-Besplatnyj_dviZhok_socialnoj_seti_na_php.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/286-Besplatnyj_dviZhok_socialnoj_seti_na_php.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=286</wfw:comment>
    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=286</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
&lt;span style=&quot;font-style: italic&quot;&gt;Идя навстречу Максиму, разработчику open source проекта бесплатного движка для блога и сообщества блогов на базе PHP, публикую у себя анонс новой версии программного продукта – CMS LiveStreet. Итак, Максим пишет:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Сейчас всё большую популярность в интернете приобретают сайты, где содержимым (контентом) сайта управляют сами пользователи сайта. Они могу наполнять сайт информацией, оценивать эту информацию, оценивать других пользователей, составлять различные рейтинги. Одним словом, они имеют возможность &quot;сформировать&quot; такой сайт, который им нужен. &lt;br /&gt;
&lt;br /&gt;
На многих сайтах не последнюю роль играет социальная составляющая. Т.к. сайт, как правило, объединяет людей по какому либо признаку: интересы, место жительства, путешествия и т.п. Люди не просто обмениваются информацией - они общаются. Всё это можно объединить одним определением - социальная сеть. Подача информации зачастую происходит в виде блогов, т.е. в виде сообщений, опубликованных в каком либо блоге, которые можно обсудить в комментариях. &lt;br /&gt;
&lt;br /&gt;
Часто еще группу блогов называют сообществом. &lt;br /&gt;
&lt;br /&gt;
Желающие создать собственный такой сайт сталкиваются с одной проблемой - какой движок (скрипт) выбрать для построения сайта, т.к. программировать самому такую систему сложно и дорого. Еще один критерий - это бесплатность движка, обычно за хорошие движки их создатели просят денег.&lt;br /&gt;
&lt;br /&gt;
В связи с этим хочу представить вам бесплатный движок социальной сети (или даже блоговой сети) от российских разработчиков - LiveStreet.&lt;br /&gt;
&lt;br /&gt;
Этот движок написан на PHP5 и использует в качестве хранения данных реляционую базу данных MySql. Внутренняя архитектура построена на принципе MVC (модель-вид-контроллер) с применением объектно-ориентированного программирования. &lt;br /&gt;
&lt;br /&gt;
Вообще движок построен на ядре собственного фреймворка, используя которые можно достаточно просто разработать любой сайт. Но это больше касается программистов PHP :) Для них, кстати, на сайте проекта есть документация по ядру.&lt;br /&gt;
&lt;br /&gt;
Но нас больше интересует, какие возможности предоставляет LiveStreet с точки зрения пользователей.&lt;br /&gt;
&lt;br /&gt;
Итак, возможности:&lt;br /&gt;
1. Полная поддержка кодировки UTF-8&lt;br /&gt;
2. Ведение персональных блогов&lt;br /&gt;
3. Возможность создания коллективных блогов&lt;br /&gt;
4. Система рейтингов блогов, топиков, комментариев, пользователей&lt;br /&gt;
5. Система голосования за блоги, топики, комментарии, пользователей&lt;br /&gt;
6. Возможность добавлять топики в избранное&lt;br /&gt;
7. Автоподстановка тегов&lt;br /&gt;
8. Коллективная внутренняя почта&lt;br /&gt;
9. Система контроля доступа(ACL) к разным возможностям сети (создание блога, возможность голосования и т.п.)&lt;br /&gt;
10. Возможность создать закрытый сайт&lt;br /&gt;
11. Система инвайтов&lt;br /&gt;
12. Топики-ссылки&lt;br /&gt;
13. Топики-опросы&lt;br /&gt;
14. Администрирование своих блогов&lt;br /&gt;
15. Назначение модераторов блогов&lt;br /&gt;
16. Настройки оповещений на электронную почту.&lt;br /&gt;
&lt;br /&gt;
Как видно из возможностей, движок предоставляет основные возможности для создания своей собственной социальной сети на основе блогов. Хорошим примером такой сети служит довольно популярные сайт &lt;a href=&quot;http://habrahabr.ru&quot; target=&quot;_blank&quot;&gt;Хабрахабр&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Что необходимо на хостинге для установки LiveStreet:&lt;br /&gt;
1. PHP5 и расширением mbstring для корректной работы с кодировкой UTF-8&lt;br /&gt;
2. Базой данных MySQL5 с типом таблиц InnoDB (хотя будет работать и на MyISAM)&lt;br /&gt;
3. Веб-сервер Apache с модулем mod_rewrite.&lt;br /&gt;
&lt;br /&gt;
Большинство хостингов удовлетворяют этим требованиям.&lt;br /&gt;
&lt;br /&gt;
Процесс установки:&lt;br /&gt;
1. Скачать дистрибутив движка со страницы &lt;a href=&quot;http://livestreet.ru/page/download/&quot; target=&quot;_blank&quot;&gt;http://livestreet.ru/page/download/&lt;/a&gt;&lt;br /&gt;
2. Разархивировать архив в нужный каталог вашего сайта&lt;br /&gt;
3. Выполнить SQL дамп (sql.sql), предварительно создав базу данных&lt;br /&gt;
4. Настроить коннект к БД (config/config.db.php)&lt;br /&gt;
5. Настроить параметры движка (config/config.php)&lt;br /&gt;
6. Дать права 777 каталогам:  logs, uploads, templates\compiled, templates\cache и каталогу для хранения временных файлов(/tmp/)&lt;br /&gt;
7. Готово! По умолчанию в системе создается администратор admin с паролем admin &lt;br /&gt;
&lt;br /&gt;
Ответы на большинство вопросов по использованию движка LiveStreet можно найт ина сайте проекта &lt;a href=&quot;http://livestreet.ru&quot; target=&quot;_blank&quot;&gt;http://livestreet.ru&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
    </content:encoded>
                
    <pubDate>Tue, 11 Nov 2008 17:23:25 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/286-guid.html</guid>
    </item>
<item>
    <title>RSS + PHP + SimpleXML = пишем скрипт публикации новостей за 15 минут</title>
    <link>http://blog.phpworld.ru/archives/226-RSS_+_PHP_+_SimpleXML__pishem_skript_publikacii_novostej_za_15_minut.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/226-RSS_+_PHP_+_SimpleXML__pishem_skript_publikacii_novostej_za_15_minut.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=226</wfw:comment>
    <slash:comments>41</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=226</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
Попросил меня один очень хороший знакомый написать сценарий, позволяющий публиковать на главной странице его сайта компьютерные новости с сайта 3DNews.ru. При этом он высказал мне следующее пожелание – новости должны автоматически скачиваться с сайта донора и сохраняться на локальном сервере, дабы не замедлять загрузку страницы при каждом обращении к ней. К тому же обновление новостей должно происходить примерно 2 раза в сутки. И на последок – достаточно публиковать только 5 новостей из всего, что предлагает 3DNews.ru.&lt;br /&gt;
&lt;br /&gt;
И не то, что это было бы сложно сделать, но уж совсем времени свободного на такое жалко. А поскольку знакомый очень уж хороший, то решился я все же ему помочь, однако выбрал самый короткий путь к цели. В результате скрипт написался практически сам собой минут за 15-20. &lt;br /&gt;
&lt;br /&gt;
Судите сами. Для приготовления такого блюда в кратчайшие сроки необходимо иметь следующие ингредиенты:&lt;br /&gt;
1. Адрес &lt;b&gt;RSS&lt;/b&gt;-канала новостей (это была, кстати, самая сложная задача, так как на самом сайте 3DNews.ru этот адрес не так то и легко было отыскать)&lt;br /&gt;
2. &lt;b&gt;PHP5&lt;/b&gt; под управлением сервера Apache&lt;br /&gt;
3. Самый простой инструмент для работы с XML – модуль PHP &lt;b&gt;SimpleXML&lt;/b&gt; (в PHP5 входит по умолчанию,  о чем многие и не догадываются), удачно написанный в свое время замечательным программистом и превосходным человеком &lt;i&gt;&lt;a href=&quot;http://blog.phpworld.ru/uploads/blogimages/php/php2003.jpg &quot; target=&quot;_blank&quot;&gt;Стерлингом Хьюзом&lt;/a&gt;&lt;/i&gt; (справа в очках), кстати, если встретите его книгу о PHP, обязательно прикупите – очень советую.&lt;br /&gt;
&lt;br /&gt;
Почему именно PHP5? Ну, во-первых, из-за SimpleXML. Во-вторых, чтобы не очень возиться с файлами при чтении и записи, так как в пятерке PHP есть замечательные функции, которые позволяют выполнять стандартные операции с файлами за один оператор кода  (например, &lt;i&gt;file_put_contents()&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
Что получилось в результате – предлагаю ознакомиться с &lt;a href=&quot;http://blog.phpworld.ru/txt/3dnews.php.txt&quot; target=&quot;_blank&quot;&gt;полным кодом сценария&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
И главное – не более 15 минут на все : )&lt;br /&gt;
&lt;br /&gt;
Примечание. Будите использовать этот код – убедитесь, что папка rss, которую я указал для хранения xml-документа новостей, имеет права на запись в нее PHP-сценарием.&lt;br /&gt;
&lt;br /&gt;
А информацию о том, что представляет из себя SimpleXML, можно почитать на сайте &lt;a href=&quot;http://ru2.php.net/manual/ru/ref.simplexml.php&quot; target=&quot;_blank&quot;&gt;PHP&lt;/a&gt;.     </content:encoded>
                
    <pubDate>Sat, 27 Jan 2007 20:00:38 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/226-guid.html</guid>
    </item>
<item>
    <title>Проверка данных формы на минимальное–максимальное числовое значение при помощи PHP (PEAR.HTML.QuickForm)</title>
    <link>http://blog.phpworld.ru/archives/220-Proverka_dannyh_formy_na_minimalnoemaksimalnoe_chislovoe_znachenie_pri_pomowi_PHP_PEAR.HTML.QuickForm.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/220-Proverka_dannyh_formy_na_minimalnoemaksimalnoe_chislovoe_znachenie_pri_pomowi_PHP_PEAR.HTML.QuickForm.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=220</wfw:comment>
    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=220</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
Задача проверки данных полей формы, заполняемой пользователем на веб-сайте, на минимальное–максимальное числовое значение при помощи PHP не представляет из себя большую трудность. Однако, буквально вчера, я столкнулся с тем, что если использовать для работы с формой классы пакета &lt;b&gt;PEAR.HTML.QuickForm&lt;/b&gt;, то без самостоятельных доработок возможна только проверка на количество вводимых в поле input символов, а также на то, что символы исключительно числовые.&lt;br /&gt;
&lt;br /&gt;
Так что же делать, если контролировать нужно также и диапазон значения?&lt;br /&gt;
&lt;br /&gt;
Предлагаю следующий вариант класса &lt;b&gt;HTML/QuickForm/Rule/Range.php&lt;/b&gt; c уже готовыми переделками и доработками:&lt;pre style=&quot;font-size: 12px&quot;&gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/&lt;strong&gt; vim: set expandtab tabstop=4 shiftwidth=4: &lt;/strong&gt;/&lt;br /&gt;
// +----------------------------------------------------------------------+&lt;br /&gt;
// | PHP version 4.0                                                      |&lt;br /&gt;
// +----------------------------------------------------------------------+&lt;br /&gt;
// | Copyright (c) 1997-2003 The PHP Group                                |&lt;br /&gt;
// +----------------------------------------------------------------------+&lt;br /&gt;
// | This source file is subject to version 2.0 of the PHP license,       |&lt;br /&gt;
// | that is bundled with this package in the file LICENSE, and is        |&lt;br /&gt;
// | available at through the world-wide-web at                           |&lt;br /&gt;
// | http://www.php.net/license/2_02.txt.                                 |&lt;br /&gt;
// | If you did not receive a copy of the PHP license and are unable to   |&lt;br /&gt;
// | obtain it through the world-wide-web, please send a note to          |&lt;br /&gt;
// | license@php.net so we can mail you a copy immediately.               |&lt;br /&gt;
// +----------------------------------------------------------------------+&lt;br /&gt;
// | Authors: Bertrand Mansion &lt;bmansion@mamasam.com&gt;                     |&lt;br /&gt;
// +----------------------------------------------------------------------+&lt;br /&gt;
//&lt;br /&gt;
// $Id: Range.php,v 1.6 2003/11/03 16:08:24 avb Exp $&lt;br /&gt;
&lt;br /&gt;
require_once('HTML/QuickForm/Rule.php');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&lt;strong&gt; Validates values using range comparison&lt;br /&gt;
&lt;/strong&gt; @version     1.0&lt;br /&gt;
&lt;strong&gt;/&lt;br /&gt;
class HTML_QuickForm_Rule_Range extends HTML_QuickForm_Rule&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     &lt;/strong&gt; Validates a value using a range comparison&lt;br /&gt;
     &lt;strong&gt;&lt;br /&gt;
     &lt;/strong&gt; @param     string    $value      Value to be checked&lt;br /&gt;
     &lt;strong&gt; @param     mixed     $options    int for single value comparison,&lt;br /&gt;
     &lt;/strong&gt;                                  array for range&lt;br /&gt;
     &lt;strong&gt; @return    boolean   true if value is valid&lt;br /&gt;
     &lt;/strong&gt; @access    public&lt;br /&gt;
     &lt;strong&gt;/&lt;br /&gt;
    function validate($value, $options)&lt;br /&gt;
    {&lt;br /&gt;
        $length = strlen($value);&lt;br /&gt;
        switch ($this-&gt;name) {&lt;br /&gt;
            case 'minlength':  return ($length &gt;= $options);&lt;br /&gt;
            case 'maxlength':  return ($length &lt;= $options);&lt;br /&gt;
            case 'minvalue':   return ($value &gt;= $options);&lt;br /&gt;
            case 'maxvalue':   return ($value &lt;= $options);&lt;br /&gt;
            case 'rangevalue': return (float($value) &gt;= $options[0] &amp;&amp;amp; float($value) &lt;= $options[2]);&lt;br /&gt;
            default:           return ($length &gt;= $options[0] &amp;&amp;amp; $length &lt;= $options[1]);&lt;br /&gt;
        }&lt;br /&gt;
    } // end func validate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     &lt;/strong&gt; Generates client-side validation script&lt;br /&gt;
     &lt;strong&gt;&lt;br /&gt;
     &lt;/strong&gt; @param     mixed     $options    int for single value comparison,&lt;br /&gt;
     &lt;strong&gt;                                  array for range&lt;br /&gt;
     &lt;/strong&gt; @return    string&lt;br /&gt;
     &lt;strong&gt; @access    public&lt;br /&gt;
     &lt;/strong&gt;/&lt;br /&gt;
    function getValidationScript($options = null)&lt;br /&gt;
    {&lt;br /&gt;
        switch ($this-&gt;name) {&lt;br /&gt;
            case 'minlength':&lt;br /&gt;
                $test = '{jsVar}.length &lt; '.$options;&lt;br /&gt;
                break;&lt;br /&gt;
            case 'maxlength':&lt;br /&gt;
                $test = '{jsVar}.length &gt; '.$options;&lt;br /&gt;
                break;&lt;br /&gt;
            case 'minvalue':&lt;br /&gt;
                $test = 'Number{jsVar} &amp;lt; '.$options;&lt;br /&gt;
                break;&lt;br /&gt;
            case 'maxvalue':&lt;br /&gt;
                $test = 'Number({jsVar}) &gt; '.$options;&lt;br /&gt;
                break;&lt;br /&gt;
            case 'rangevalue':&lt;br /&gt;
                $test = 'Number(({jsVar}) &amp;lt; '.$options[0].' || Number({jsVar}) &gt; '.$options[1].')';&lt;br /&gt;
                break;&lt;br /&gt;
            default:&lt;br /&gt;
                $test = '({jsVar}.length &lt; '.$options[0].' || {jsVar}.length &gt; '.$options[1].')';&lt;br /&gt;
        }&lt;br /&gt;
        return array('', &quot;{jsVar} != '' &amp;&amp;amp; {$test}&quot;);&lt;br /&gt;
    } // end func getValidationScript&lt;br /&gt;
&lt;br /&gt;
} // end class HTML_QuickForm_Rule_Range&lt;br /&gt;
?&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Однако, без регистрации новых правил в классе HTML/QuickForm.php ничего работать не будет (фрагмент класса):&lt;br /&gt;
&lt;pre style=&quot;font-size: 12px&quot;&gt;&lt;br /&gt;
$GLOBALS['_HTML_QuickForm_registered_rules'] = array(&lt;br /&gt;
    'required'      =&gt; array('html_quickform_rule_required', 'HTML/QuickForm/Rule/Required.php'),&lt;br /&gt;
    'maxlength'     =&gt; array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),&lt;br /&gt;
    'minlength'     =&gt; array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),&lt;br /&gt;
&lt;b&gt;    'minvalue'      =&gt; array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),&lt;br /&gt;
    'maxvalue'      =&gt; array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),&lt;br /&gt;
    'rangevalue'    =&gt; array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),&lt;/b&gt;&lt;br /&gt;
    'rangelength'   =&gt; array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),&lt;br /&gt;
    'email'         =&gt; array('html_quickform_rule_email',    'HTML/QuickForm/Rule/Email.php'),&lt;br /&gt;
    'regex'         =&gt; array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),&lt;br /&gt;
    'lettersonly'   =&gt; array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),&lt;br /&gt;
    'alphanumeric'  =&gt; array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),&lt;br /&gt;
    'numeric'       =&gt; array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),&lt;br /&gt;
    'nopunctuation' =&gt; array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),&lt;br /&gt;
    'nonzero'       =&gt; array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),&lt;br /&gt;
    'callback'      =&gt; array('html_quickform_rule_callback', 'HTML/QuickForm/Rule/Callback.php'),&lt;br /&gt;
    'compare'       =&gt; array('html_quickform_rule_compare',  'HTML/QuickForm/Rule/Compare.php')&lt;br /&gt;
);&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
И вот теперь проверка на значение может быть выполнена легко и просто, как это всегда и делается в PEAR.HTML.QuickForm:&lt;br /&gt;
&lt;pre style=&quot;font-size: 12px&quot;&gt;&lt;br /&gt;
&lt;b&gt;$form-&gt;addRule('valuefield', 'значение должно быть не меньше 100', 'minvalue', 100);&lt;/b&gt;&lt;br /&gt;
&lt;/pre&gt;Удачи!&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
    </content:encoded>
                
    <pubDate>Thu, 07 Dec 2006 09:00:30 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/220-guid.html</guid>
    </item>
<item>
    <title>Первый ZCE по PHP версии 5 в России!</title>
    <link>http://blog.phpworld.ru/archives/213-Pervyj_ZCE_po_PHP_versii_5_v_Rossii!.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/213-Pervyj_ZCE_po_PHP_versii_5_v_Rossii!.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=213</wfw:comment>
    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=213</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
Поздравляю от всей души Илью Семина, который первым в России сдал новый экзамен по PHP версии 5. Его впечатления опубликованы на сайте www.phpworld.ru в статье &lt;a href=&quot;http://www.phpworld.ru/articles/zcephp5.php&quot; &gt;Как я получил ZCE PHP 5&lt;/a&gt;.     </content:encoded>
                
    <pubDate>Mon, 09 Oct 2006 08:28:30 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/213-guid.html</guid>
    </item>
<item>
    <title>Еще раз о генерации WSDL-документа</title>
    <link>http://blog.phpworld.ru/archives/199-Ewe_raz_o_generacii_WSDL-dokumenta.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/199-Ewe_raz_o_generacii_WSDL-dokumenta.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=199</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=199</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
George Schlossnagle, известный специалист по построению высоконагруженных PHP-приложений, представляет свой собственный класс для генерации WSDL-документов по коду класса WEB-сервиса, написанного на PHP5. Сам код класса и его описание опубликованы &lt;a href=&quot;http://www.schlossnagle.org/~george/blog/index.php?/archives/234-WSDL-Generation.html&quot; &gt;на блоге Джорджа&lt;/a&gt;.    </content:encoded>
                
    <pubDate>Fri, 21 Jul 2006 04:36:12 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/199-guid.html</guid>
    </item>
<item>
    <title>Отчет по вебинару Zend &quot;Web Services with PHP&quot;</title>
    <link>http://blog.phpworld.ru/archives/198-Otchet_po_vebinaru_Zend_Web_Services_with_PHP.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/198-Otchet_po_vebinaru_Zend_Web_Services_with_PHP.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=198</wfw:comment>
    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=198</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
&lt;div class=&quot;serendipity_imageComment_left&quot; style=&quot;width: 400px&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;img width=&quot;400&quot; height=&quot;227&quot; src=&quot;http://blog.phpworld.ru/uploads/PHP_Web_Services_slide1.jpg&quot; alt=&quot;&quot;  /&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Один из слайдов вебинара&lt;/div&gt;&lt;/div&gt;Вебинар начался без задержек в 22-00. Ведущий семинара – &lt;b&gt;&lt;a href=&quot;http://devzone.zend.com/member/profile/id/347&quot; &gt;John Herren&lt;/a&gt;&lt;/b&gt;. Начав с эволюции PHP и показав его логичное развитие в сторону ООП и использования Web-сервисов (привожу часть слайда на эту тему), ведущий продемонстрировал примеры работы с XML на PHP с помощью различных инструментов, таких как DOM, SimpleXML. &lt;br /&gt;
&lt;br /&gt;
&lt;br clear=&quot;left&quot; /&gt;&lt;br /&gt;
Особый упор был сделан на тех инструментах, которые дает Zend Framework, в частности на:&lt;br /&gt;
- &lt;b&gt;Zend_Feed&lt;/b&gt;&lt;br /&gt;
- &lt;b&gt;Zend_XmlRpc&lt;/b&gt;&lt;br /&gt;
- &lt;b&gt;Zend_Service_*&lt;/b&gt;&lt;br /&gt;
- &lt;b&gt;Zend_Service_Yahoo&lt;/b&gt;&lt;br /&gt;
- &lt;b&gt;Zend_Service_Flickr&lt;/b&gt;&lt;br /&gt;
- &lt;b&gt;Zend_Service_Amazon&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Что касается последних двух, то Джон показал простоту их использования для реализации приложений, работающих с &lt;b&gt;Flicker&lt;/b&gt; и &lt;b&gt;Amazon&lt;/b&gt; на простых, но достаточно мощных и увлекательных примерах, написав на наших глазах два клиента к веб-сервисам буквально потратив не более пары минут на каждое. Так, к примеру, приложение, использующие Zend_Service_Amazon, вытаскивало с Amazon’а аннотации и обложки книг по ключевым фразам (в примере использовался ключ &quot;C++&quot;). &lt;br /&gt;
&lt;br /&gt;
Также Джон рассказал и показал на примерах создание SOAP-серверов на PHP.&lt;br /&gt;
&lt;br /&gt;
В конце семинара ведущий ответил на заданные ему вопросы, порекомендовал ряд полезных ресурсов и поблагодарил всех за участие.&lt;br /&gt;
&lt;br /&gt;
P.S. Удобно участвовать в семинаре, не выходя из дома, с чашкой горячего какао. Одно смущает, когда в 10 вечера ведущий семинара приветствует тебя фразой &quot;Good morning, everyone!&quot;&lt;br /&gt;
&lt;br /&gt;
P.P.S. Для Ивана Никитина! На семинаре наблюдал (всегда сам пытался сделать, но не получалось), как просто и быстро можно сгенерировать WSDL-документ генератором Zend Studio. Похоже, что вся фишка в том, чтобы правильно написать комментарии в описании класса, на основании которых генератор создает узлы WSDL-документа.    </content:encoded>
                
    <pubDate>Thu, 20 Jul 2006 06:19:45 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/198-guid.html</guid>
    </item>
<item>
    <title>Бесплатный webinar (web-семинар) по web-сервисам на PHP</title>
    <link>http://blog.phpworld.ru/archives/197-Besplatnyj_webinar_web-seminar_po_web-servisam_na_PHP.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/197-Besplatnyj_webinar_web-seminar_po_web-servisam_na_PHP.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=197</wfw:comment>
    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=197</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
&lt;img src=&quot;http://www.zend.com/design/corporate//images/zend_logo.gif&quot; align=&quot;left&quot; style=&quot;margin-right: 20px&quot; alt=&quot;&quot;  /&gt;&lt;br /&gt;
Сегодня в 22 часа по московскому времени компания Zend проводит бесплатный webinar (web-семинар) по теме &lt;b&gt;Web Services with PHP&lt;/b&gt;. &lt;br /&gt;
&lt;br /&gt;
В программе семинара рассматриваются следующие вопросы:&lt;br /&gt;
- создание веб-сервисов, которые универсально могут использоваться с Java, PHP и другими приложениями&lt;br /&gt;
- интеграция существующих веб-сервисов в PHP-приложения&lt;br /&gt;
- использование веб-сервисов Amazon, Flicker, Yahoo и др. с компонентом веб-сервисов Zend Framework&lt;br /&gt;
- эффективная разработка, управление и поддержание архитектуры приложений, ориентированных на использование веб-сервисов&lt;br /&gt;
&lt;br /&gt;
Регистрация на участие в семинаре ведется &lt;a href=&quot;https://zend.webex.com/mw0202l/mywebex/default.do?siteurl=zend&amp;amp;service=6&amp;amp;main_url=%2Fec0502l%2Feventcenter%2Fmainframe.do%3Fmainurl%3Dhttps%253A%252F%252Fzend.webex.com%252Fec0502l%252Feventcenter%252Fevent%252FeventAction.do%253FtheAction%253Ddetail%2526confViewID%253D240638349%2526siteurl%253Dzend%26siteurl%3Dzend&quot; &gt;на сайте Zend&lt;/a&gt;.    </content:encoded>
                
    <pubDate>Wed, 19 Jul 2006 04:56:22 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/197-guid.html</guid>
    </item>
<item>
    <title>Вышел новый номер журнала PHP Inside - №18</title>
    <link>http://blog.phpworld.ru/archives/196-Vyshel_novyj_nomer_Zhurnala_PHP_Inside_-_18.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/196-Vyshel_novyj_nomer_Zhurnala_PHP_Inside_-_18.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=196</wfw:comment>
    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=196</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
&lt;a href='http://phpinside.ru/mag/phpi18_2006_final.pdf'&gt;&lt;img width='110' height='156' style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.phpworld.ru/uploads/2006-18-small.gif&quot; alt=&quot;Журнал PHP Inside - №18&quot; /&gt;&lt;/a&gt;Из интересного в журнале читайте интервью со мной на странице 72. &lt;br /&gt;
&lt;br /&gt;
В интервью были затронуты такие темы, как получение PHP-образования в России и СНГ, о программе сертификации Zend и  о состоянии дел на рынке труда веб-разработчиков.&lt;br /&gt;
&lt;br /&gt;
Полная версия журнала доступна в онлайне на &lt;a href=&quot;http://phpinside.ru/mag/phpi18_2006_final.pdf&quot; &gt;сайте редакции&lt;/a&gt;.    </content:encoded>
                
    <pubDate>Mon, 17 Jul 2006 18:11:25 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/196-guid.html</guid>
    </item>
<item>
    <title>Новый сертификационный экзамен по php 5</title>
    <link>http://blog.phpworld.ru/archives/195-Novyj_sertifikacionnyj_jekzamen_po_php_5.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/195-Novyj_sertifikacionnyj_jekzamen_po_php_5.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=195</wfw:comment>
    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=195</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
&lt;img width=&quot;89&quot; height=&quot;76&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.phpworld.ru/uploads/yellow_pages_logo.gif&quot; alt=&quot;&quot;  /&gt;Компания &lt;b&gt;Zend&lt;/b&gt; анонсировала выход очередной версии сертификационного экзамена по php. В новом варианте экзамен будет ориентирован на версию 5. По словам разработчиков экзамена, нас ожидает не просто обновление экзамена, а его существенная переделка. Новая версия экзамена будет действовать с 31 августа 2006 года. Однако старый экзамен по php 4 можно будет еще сдавать до конца этого года.&lt;br /&gt;
    </content:encoded>
                
    <pubDate>Tue, 11 Jul 2006 05:28:08 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/195-guid.html</guid>
    </item>
<item>
    <title>Подгрузка файлов на php при помощи PEAR класса QuickForm</title>
    <link>http://blog.phpworld.ru/archives/190-Podgruzka_fajlov_na_php_pri_pomowi_PEAR_klassa_QuickForm.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/190-Podgruzka_fajlov_na_php_pri_pomowi_PEAR_klassa_QuickForm.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=190</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=190</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
Давно уже использую &lt;b&gt;PEAR&lt;/b&gt; для разработки &lt;b&gt;PHP&lt;/b&gt; приложений, а в последнее время вплотную подружился с пакетом &lt;b&gt;QuickForm&lt;/b&gt;. Вчера возникла задача подгрузки файла через форму. Вот так она решается в QuickForm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Подгружаем PEAR класс QuickForm&lt;br /&gt;
require_once 'HTML/QuickForm.php';&lt;br /&gt;
&lt;br /&gt;
$form = new HTML_QuickForm('upload_form'); &lt;br /&gt;
&lt;br /&gt;
// Создание элемента формы типа file &lt;br /&gt;
$form-&gt;addElement('file','uploaded_file','Файл:'); &lt;br /&gt;
&lt;br /&gt;
// Установка максимального размера загружаемого файла &lt;br /&gt;
$max_size = 100000; &lt;br /&gt;
&lt;br /&gt;
// Проверка поля на подключение файла &lt;br /&gt;
$form-&gt;addRule('uploaded_file','Внимание! Необходимо указать файл для загрузки','uploaded_file'); &lt;br /&gt;
&lt;br /&gt;
// Проверка файла на дапустимый размер&lt;br /&gt;
$form-&gt;addRule('uploaded_file','Слишком большой размер файла','maxfilesize',$max_size); &lt;br /&gt;
$form-&gt;addElement('submit','save','Загрузить'); &lt;br /&gt;
&lt;br /&gt;
// Отображение формы&lt;br /&gt;
if ($form-&gt;validate()) { &lt;br /&gt;
   $form-&gt;process('move_file'); &lt;br /&gt;
} else { &lt;br /&gt;
   $form-&gt;display(); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
function move_file($data) { &lt;br /&gt;
    global $form;&lt;br /&gt;
	$file =&amp;amp; $form-&gt;getElement('uploaded_file'); &lt;br /&gt;
	// Переместить загруженный файл на ПМЖ&lt;br /&gt;
	if ($file-&gt;moveUploadedFile('/files/')) { &lt;br /&gt;
	  echo 'Файл успешно загружен!'; &lt;br /&gt;
	} else { &lt;br /&gt;
	  echo 'Ошибка загрузки файла'; &lt;br /&gt;
	} &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
?&gt;&lt;br /&gt;
&lt;br /&gt;
Естественно, что для того, чтобы код выполнялся без ошибки необходимо инсталлировать пакет QuickForm на сервер.&lt;br /&gt;
&lt;br /&gt;
Удачи!!!    </content:encoded>
                
    <pubDate>Wed, 21 Jun 2006 09:02:52 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/190-guid.html</guid>
    </item>
<item>
    <title>Близится выход PHP 5.2.0</title>
    <link>http://blog.phpworld.ru/archives/174-BlizitsJa_vyhod_PHP_5.2.0.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/174-BlizitsJa_vyhod_PHP_5.2.0.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=174</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=174</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
Список добавлений возможностей новой версии PHP, а также процесс поэтапной реализации, можно наблюдать на сайте - &lt;a href=&quot;http://oss.backendmedia.com/PhP52&quot; &gt;http://oss.backendmedia.com/PhP52&lt;/a&gt;.&lt;br /&gt;
    </content:encoded>
                
    <pubDate>Fri, 12 May 2006 14:18:10 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/174-guid.html</guid>
    </item>
<item>
    <title>В продолжение предыдущей темы (PHP vs другие веб-технологии, в картинках)</title>
    <link>http://blog.phpworld.ru/archives/169-V_prodolZhenie_predyduwej_temy_PHP_vs_drugie_veb-tehnologii,_v_kartinkah.html</link>
<category>php</category>    <comments>http://blog.phpworld.ru/archives/169-V_prodolZhenie_predyduwej_temy_PHP_vs_drugie_veb-tehnologii,_v_kartinkah.html#comments</comments>
    <wfw:comment>http://blog.phpworld.ru/wfwcomment.php?cid=169</wfw:comment>
    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.phpworld.ru/rss.php?version=2.0&amp;type=comments&amp;cid=169</wfw:commentRss>
    <author>nospam@example.com (Леонид Лукин)</author>
    <content:encoded>
&lt;img width='235' height='285' style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://blog.phpworld.ru/uploads/blogimages/php/zend-pl.JPG&quot; alt=&quot;Сева отобрал у меня Zend-овскую кепи для пропаганды правильной технологии среди учеников его школы&quot; /&gt;&lt;i&gt;Крошка сын к отцу пришел,&lt;br /&gt;
И сказала кроха,&lt;br /&gt;
&lt;b&gt;Zend Platform&lt;/b&gt;'а – хорошо!!!&lt;br /&gt;
Остальное – плохо!!!&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
P.S. Кстати, эту бейсболку я отобрал в &lt;a href=&quot;http://blog.phpworld.ru/archives/39-Prazdnovanie_10-j_godovwiny_PHP_.html&quot; &gt;Сан-Франциско&lt;/a&gt; у самого &lt;b&gt;Зива Сурасски&lt;/b&gt;, потому что те «шапки», которые они раздавали на конференции по PHP, были уж очень ядовито-зеленого цвета. А теперь вот и сын отобрал у меня Zend-овскую кепи для пропаганды правильной технологии среди учеников его школы.&lt;br /&gt;
&lt;br /&gt;
P.P.S. Один мой друг вчера произнес забавную, на мой взгляд, фразу: &quot;Я этот email специально для спама завел&quot;. См. сообщение о &lt;a href=&quot;http://blog.phpworld.ru/archives/161-Zawita_email_ot_spamerov_na_PHP.html&quot; &gt;защите email'а от спама&lt;/a&gt;.    </content:encoded>
                
    <pubDate>Fri, 28 Apr 2006 05:11:25 +0000</pubDate>
    <guid isPermaLink="false">http://blog.phpworld.ru/archives/169-guid.html</guid>
    </item>
</channel>
</rss>

