<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Комментарии: Создание объектно-ориентированного аналога массива в PHP. Часть 1</title>
	<atom:link href="http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/</link>
	<description>Статьи по SEO, дизайну и программированию. Переводы на веб-тематику. Исследования и наработки в области интернет-технологий.</description>
	<lastBuildDate>Fri, 03 Feb 2012 14:59:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Автор: hacpaka</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-118554</link>
		<dc:creator>hacpaka</dc:creator>
		<pubDate>Fri, 02 Dec 2011 11:07:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-118554</guid>
		<description>А что плохого в экцепшине? Код ошибки логично возвращать, когда исключительной ситуации нет, то есть когда код ошибки является по сути возможным и допустимым значением и может быть использован далее как результат.  Например функция делающие в цикле некоторые действия, пока не получит некоторый код возврата. Это логично и красиво. Тут же исключительна ситуация на лицо. Самое место экцепшину, имхо.</description>
		<content:encoded><![CDATA[<p>А что плохого в экцепшине? Код ошибки логично возвращать, когда исключительной ситуации нет, то есть когда код ошибки является по сути возможным и допустимым значением и может быть использован далее как результат.  Например функция делающие в цикле некоторые действия, пока не получит некоторый код возврата. Это логично и красиво. Тут же исключительна ситуация на лицо. Самое место экцепшину, имхо.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Econ</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-118552</link>
		<dc:creator>Econ</dc:creator>
		<pubDate>Fri, 02 Dec 2011 10:53:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-118552</guid>
		<description>Кидать exception по моему не корректно, лучше просто возвращать код ошибки</description>
		<content:encoded><![CDATA[<p>Кидать exception по моему не корректно, лучше просто возвращать код ошибки</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Linney</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-113090</link>
		<dc:creator>Linney</dc:creator>
		<pubDate>Tue, 30 Aug 2011 13:31:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-113090</guid>
		<description>В Pear уже есть куча готовых решений таких массивов</description>
		<content:encoded><![CDATA[<p>В Pear уже есть куча готовых решений таких массивов</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: блабла</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-18902</link>
		<dc:creator>блабла</dc:creator>
		<pubDate>Sun, 11 Apr 2010 18:04:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-18902</guid>
		<description>дадада, надо поумолчанию сделать $key=-1, и проверять на больше равно нулю</description>
		<content:encoded><![CDATA[<p>дадада, надо поумолчанию сделать $key=-1, и проверять на больше равно нулю</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: HACPAKA</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2855</link>
		<dc:creator>HACPAKA</dc:creator>
		<pubDate>Thu, 15 Jan 2009 20:25:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-2855</guid>
		<description>Хм.... 
 if ($key === null &#124;&#124; empty($key)){
...}
А если $key=0 ?
Ваш метод добавит в конец массива новый элемент, а я хочу добавить элемент на позицию 0.
Не есть гуд...</description>
		<content:encoded><![CDATA[<p>Хм&#8230;.<br />
 if ($key === null || empty($key)){<br />
&#8230;}<br />
А если $key=0 ?<br />
Ваш метод добавит в конец массива новый элемент, а я хочу добавить элемент на позицию 0.<br />
Не есть гуд&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: nickwais</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2716</link>
		<dc:creator>nickwais</dc:creator>
		<pubDate>Fri, 09 Jan 2009 12:56:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-2716</guid>
		<description>В методах add и del нужно использовать созданный метод exist, а не проверять вручную. Реализация exist может измениться, придется переписывать все методы.

В конструкции  if ($key === null &#124;&#124; empty($key)) 
$key === null --&gt; не нужно. Это делает сам empty.</description>
		<content:encoded><![CDATA[<p>В методах add и del нужно использовать созданный метод exist, а не проверять вручную. Реализация exist может измениться, придется переписывать все методы.</p>
<p>В конструкции  if ($key === null || empty($key))<br />
$key === null &#8212;&gt; не нужно. Это делает сам empty.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Stepler</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2393</link>
		<dc:creator>Stepler</dc:creator>
		<pubDate>Sat, 27 Dec 2008 10:46:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-2393</guid>
		<description>&lt;blockquote&gt;IMHO куда логичнее было бы начинать с расширения SPL-класса ArrayObject
http://ua.php.net/manual/en/class.arrayobject.php&lt;/blockquote&gt;
&lt;p&gt;Класс &lt;code class=&quot;php&quot;&gt;ArrayObject&lt;/code&gt; меня не устроил своей реализацией. Например :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;php&quot;&gt;$arrayObject = new ArrayObject();
$arrayObject = new ArrayObject();
$arrayObject[] = &#039;first&#039;;
$arrayObject[] = &#039;second&#039;;
$arrayObject[] = &#039;third&#039;;
$arrayObject[0] = &#039;anotherFirst&#039;;

//Первый цикл
foreach ($arrayObject as $key =&gt; $value) {
    echo $key . &#039; -&gt; &#039; . $value;
    if ($key == 1)
        unset($arrayObject[$key]);
}

//Второй цикл
foreach ($arrayObject as $key =&gt; $value) {
    echo $key . &#039; -&gt; &#039; . $value;
    $arrayObject[] = &#039;---&#039;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Не всегда нужно, чтобы имелась возможность замены элементов в массиве. (элемент &lt;code class=&quot;php&quot;&gt;anotherFirst&lt;/code&gt; заменил элемент &lt;code class=&quot;php&quot;&gt;first&lt;/code&gt;). В моем случае возвращается Exception.&lt;/p&gt;
&lt;p&gt;Первый цикл начнет перебор элементов сначала, после того, как удалит 2-й элемент.&lt;/p&gt;
&lt;p&gt;Второй цикл - бесконечный.&lt;/p&gt;
&lt;p&gt;Все недочеты можно исправить, расширив класс &lt;code class=&quot;php&quot;&gt;ArrayObject&lt;/code&gt; и дополнив нужным функцционалом. Но тогда нужно будет описать внутренне его строение, это и вернуло бы нас к написанию точно-такой же статьи.&lt;/p&gt;
&lt;p&gt;Я решил в качестве примера написать свой собственный класс с описанием его работы (хотя он во многом и копирует &lt;code class=&quot;php&quot;&gt;ArrayObject&lt;/code&gt;).&lt;/p&gt;</description>
		<content:encoded><![CDATA[<blockquote><p>IMHO куда логичнее было бы начинать с расширения SPL-класса ArrayObject<br />
<a href="http://ua.php.net/manual/en/class.arrayobject.php" rel="nofollow">http://ua.php.net/manual/en/class.arrayobject.php</a></p></blockquote>
<p>Класс <code class="php">ArrayObject</code> меня не устроил своей реализацией. Например :</p>
<pre><code class="php">$arrayObject = new ArrayObject();
$arrayObject = new ArrayObject();
$arrayObject[] = 'first';
$arrayObject[] = 'second';
$arrayObject[] = 'third';
$arrayObject[0] = 'anotherFirst';

//Первый цикл
foreach ($arrayObject as $key =&gt; $value) {
    echo $key . ' -&gt; ' . $value;
    if ($key == 1)
        unset($arrayObject[$key]);
}

//Второй цикл
foreach ($arrayObject as $key =&gt; $value) {
    echo $key . ' -&gt; ' . $value;
    $arrayObject[] = '---';
}</code></pre>
<p>Не всегда нужно, чтобы имелась возможность замены элементов в массиве. (элемент <code class="php">anotherFirst</code> заменил элемент <code class="php">first</code>). В моем случае возвращается Exception.</p>
<p>Первый цикл начнет перебор элементов сначала, после того, как удалит 2-й элемент.</p>
<p>Второй цикл &#8212; бесконечный.</p>
<p>Все недочеты можно исправить, расширив класс <code class="php">ArrayObject</code> и дополнив нужным функцционалом. Но тогда нужно будет описать внутренне его строение, это и вернуло бы нас к написанию точно-такой же статьи.</p>
<p>Я решил в качестве примера написать свой собственный класс с описанием его работы (хотя он во многом и копирует <code class="php">ArrayObject</code>).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Vadim Voituk</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2371</link>
		<dc:creator>Vadim Voituk</dc:creator>
		<pubDate>Fri, 26 Dec 2008 15:10:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-2371</guid>
		<description>IMHO куда логичнее было бы начинать с расширения SPL-класса ArrayObject
http://ua.php.net/manual/en/class.arrayobject.php</description>
		<content:encoded><![CDATA[<p>IMHO куда логичнее было бы начинать с расширения SPL-класса ArrayObject<br />
<a href="http://ua.php.net/manual/en/class.arrayobject.php" rel="nofollow">http://ua.php.net/manual/en/class.arrayobject.php</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Stepler</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2325</link>
		<dc:creator>Stepler</dc:creator>
		<pubDate>Thu, 25 Dec 2008 09:05:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-2325</guid>
		<description>Интерфейсы будут реализованы в следующий статьях. В конце статьи я писал о том, что работа над классом не завершена.</description>
		<content:encoded><![CDATA[<p>Интерфейсы будут реализованы в следующий статьях. В конце статьи я писал о том, что работа над классом не завершена.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Ryzhov</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2320</link>
		<dc:creator>Ryzhov</dc:creator>
		<pubDate>Thu, 25 Dec 2008 05:56:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-2320</guid>
		<description>Малополезный класс.
Если реализовать интерфейсы ArrayAccess, Iterator и Counter класс превращается в полноценный массив.
Доступ не $object-&gt;key а $object[&#039;key]. Конструкция foreach и функция count($object)</description>
		<content:encoded><![CDATA[<p>Малополезный класс.<br />
Если реализовать интерфейсы ArrayAccess, Iterator и Counter класс превращается в полноценный массив.<br />
Доступ не $object-&gt;key а $object['key]. Конструкция foreach и функция count($object)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Горбунов Олег</title>
		<link>http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2318</link>
		<dc:creator>Горбунов Олег</dc:creator>
		<pubDate>Thu, 25 Dec 2008 04:15:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1017#comment-2318</guid>
		<description>По моему, это не «объектно-ориентированный аналог массива» а модель данных.</description>
		<content:encoded><![CDATA[<p>По моему, это не «объектно-ориентированный аналог массива» а модель данных.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.codeisart.ru @ 2012-02-04 11:29:49 -->
