Комментарии: Создание объектно-ориентированного аналога массива в PHP. Часть 1 http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/ Статьи по SEO, дизайну и программированию. Переводы на веб-тематику. Исследования и наработки в области интернет-технологий. Wed, 07 May 2014 00:31:15 +0000 hourly 1 http://wordpress.org/?v=3.5.1 Автор: Econ http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-118552 Econ Fri, 02 Dec 2011 10:53:37 +0000 http://www.codeisart.ru/?p=1017#comment-118552 Кидать exception по моему не корректно, лучше просто возвращать код ошибки

]]>
Автор: Linney http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-113090 Linney Tue, 30 Aug 2011 13:31:18 +0000 http://www.codeisart.ru/?p=1017#comment-113090 В Pear уже есть куча готовых решений таких массивов

]]>
Автор: блабла http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-18902 блабла Sun, 11 Apr 2010 18:04:47 +0000 http://www.codeisart.ru/?p=1017#comment-18902 дадада, надо поумолчанию сделать $key=-1, и проверять на больше равно нулю

]]>
Автор: HACPAKA http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2855 HACPAKA Thu, 15 Jan 2009 20:25:52 +0000 http://www.codeisart.ru/?p=1017#comment-2855 Хм….
if ($key === null || empty($key)){
…}
А если $key=0 ?
Ваш метод добавит в конец массива новый элемент, а я хочу добавить элемент на позицию 0.
Не есть гуд…

]]>
Автор: nickwais http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2716 nickwais Fri, 09 Jan 2009 12:56:49 +0000 http://www.codeisart.ru/?p=1017#comment-2716 В методах add и del нужно использовать созданный метод exist, а не проверять вручную. Реализация exist может измениться, придется переписывать все методы.

В конструкции if ($key === null || empty($key))
$key === null —> не нужно. Это делает сам empty.

]]>
Автор: Stepler http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2393 Stepler Sat, 27 Dec 2008 10:46:56 +0000 http://www.codeisart.ru/?p=1017#comment-2393

IMHO куда логичнее было бы начинать с расширения SPL-класса ArrayObject
http://ua.php.net/manual/en/class.arrayobject.php

Класс ArrayObject меня не устроил своей реализацией. Например :

$arrayObject = new ArrayObject();
$arrayObject = new ArrayObject();
$arrayObject[] = 'first';
$arrayObject[] = 'second';
$arrayObject[] = 'third';
$arrayObject[0] = 'anotherFirst';

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

//Второй цикл
foreach ($arrayObject as $key => $value) {
    echo $key . ' -> ' . $value;
    $arrayObject[] = '---';
}

Не всегда нужно, чтобы имелась возможность замены элементов в массиве. (элемент anotherFirst заменил элемент first). В моем случае возвращается Exception.

Первый цикл начнет перебор элементов сначала, после того, как удалит 2-й элемент.

Второй цикл — бесконечный.

Все недочеты можно исправить, расширив класс ArrayObject и дополнив нужным функцционалом. Но тогда нужно будет описать внутренне его строение, это и вернуло бы нас к написанию точно-такой же статьи.

Я решил в качестве примера написать свой собственный класс с описанием его работы (хотя он во многом и копирует ArrayObject).

]]>
Автор: Vadim Voituk http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2371 Vadim Voituk Fri, 26 Dec 2008 15:10:21 +0000 http://www.codeisart.ru/?p=1017#comment-2371 IMHO куда логичнее было бы начинать с расширения SPL-класса ArrayObject
http://ua.php.net/manual/en/class.arrayobject.php

]]>
Автор: Stepler http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2325 Stepler Thu, 25 Dec 2008 09:05:25 +0000 http://www.codeisart.ru/?p=1017#comment-2325 Интерфейсы будут реализованы в следующий статьях. В конце статьи я писал о том, что работа над классом не завершена.

]]>
Автор: Ryzhov http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2320 Ryzhov Thu, 25 Dec 2008 05:56:06 +0000 http://www.codeisart.ru/?p=1017#comment-2320 Малополезный класс.
Если реализовать интерфейсы ArrayAccess, Iterator и Counter класс превращается в полноценный массив.
Доступ не $object->key а $object['key]. Конструкция foreach и функция count($object)

]]>
Автор: Горбунов Олег http://www.codeisart.ru/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2318 Горбунов Олег Thu, 25 Dec 2008 04:15:03 +0000 http://www.codeisart.ru/?p=1017#comment-2318 По моему, это не «объектно-ориентированный аналог массива» а модель данных.

]]>