Комментарии: Создание объектно-ориентированного аналога массива в PHP. Часть 1 http://www.codeisart.ru/blog/creating-object-oriented-analog-array-in-php-part1/ Статьи по SEO, дизайну и программированию. Переводы на веб-тематику. Исследования и наработки в области интернет-технологий. Tue, 19 Sep 2017 15:34:18 +0000 hourly 1 http://wordpress.org/?v=3.9.2 Автор: Gina http://www.codeisart.ru/blog/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-299234 Fri, 03 Feb 2017 13:04:45 +0000 http://www.codeisart.ru/?p=1017#comment-299234 In realtà ne ho viste alcune di belle realizzate anche qui in Italia. Peccato nn ricordare i brand per linarvene qualcuna. Una però è di una catena o fanchising di negozi di rinaarziopi sartoriali, specie di jeans e la sacca è appunto stamapata con un jenas vero, un effetto molto bello.

]]>
Автор: Derrt http://www.codeisart.ru/blog/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-290657 Sun, 02 Oct 2016 12:19:59 +0000 http://www.codeisart.ru/?p=1017#comment-290657 Проблема решена. Метод get() неправильно написан. Нужно проверять не функцией isset() , а array_key_exists(). Она ищет ключ. А isset еще и проверяет, не null ли там.

]]>
Автор: Derrt http://www.codeisart.ru/blog/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-290652 Sun, 02 Oct 2016 11:13:59 +0000 http://www.codeisart.ru/?p=1017#comment-290652 При этом, если просто вывести весь массив print_r(), то элемент там есть, а доступа к нему нет.

]]>
Автор: Derrt http://www.codeisart.ru/blog/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-290651 Sun, 02 Oct 2016 11:12:16 +0000 http://www.codeisart.ru/?p=1017#comment-290651 У меня одного появляется ошибка при добавлении NULL в массив?
$array = new ArrayCollection();
$array->add(NULL, ‘k’);
print_r($array->get(‘k’));
Бросает исключение (я заменил Exception на OutOfRangeException)
OutOfRangeException с сообщением ‘k is absent in array’

]]>
Автор: ФФФ http://www.codeisart.ru/blog/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-245718 Sat, 04 Oct 2014 07:01:43 +0000 http://www.codeisart.ru/?p=1017#comment-245718 Уточнение:
public function add($data, $key = null) {

]]>
Автор: ФФФ http://www.codeisart.ru/blog/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-245717 Sat, 04 Oct 2014 07:00:40 +0000 http://www.codeisart.ru/?p=1017#comment-245717 В функции add серьезная ошибка. Необходимо заменить строку
public function add($value, $key = null) {
на
public function add($data, $key = null)

]]>
Автор: Econ http://www.codeisart.ru/blog/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-118552 Fri, 02 Dec 2011 10:53:37 +0000 http://www.codeisart.ru/?p=1017#comment-118552 Кидать exception по моему не корректно, лучше просто возвращать код ошибки

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

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

]]>
Автор: Ryzhov http://www.codeisart.ru/blog/creating-object-oriented-analog-array-in-php-part1/comment-page-1/#comment-2320 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/blog/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 По моему, это не «объектно-ориентированный аналог массива» а модель данных.

]]>