[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обсуждение ExampleCMS от chee
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Invis1ble
twin
С точками.



Спустя 2 минуты, 5 секунд Invis1ble написал(а):
геттер https://github.com/kohana/core/blob/3.3/mas...ana/Arr.php#L89
сеттер https://github.com/kohana/core/blob/3.3/mas...na/Arr.php#L202

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

chee
Invis1ble, офигеть у меня практически также как у них. smile.gif Даже с альтернативным указнием пути, через массив.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Invis1ble
Понятно. К тебе вопросов нет больше. К Кохане есть))) Чего они не могли сделать обычным массивом...

chee
Цитата
эм, на какой вопрос?
Ну я повторю в третий раз
Цитата
Объясните мне в новом свете, почему вам богопротивен интерфейс с обычным массивам при работе с сессиями?

Ладно, поздно уже в гляделки играть, спать охота. Вот задачка. С моим интерфейсом решалась бы так:
    $session = new Session;
$array = array('key1' => 1, 'key2' => 2, 'key3' => 3);
$i = 0;

foreach($array as $key => $value)
{
if($i++ % 2 == 0)
{
$arr[$key][$value] = $i;
$session->set($arr);
}
}
Покажите решение с точками.
Свернутый текст
Я его знаю естественно, с конкатеннацией, но все же, сравним.


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
volter9
twin
Может быть я отвечу smile.gif Потому что если вы будете переберать многомерный массив без точек, есть вероятность получить по рукам Warning/Notice: undefined index/offset 'foo'

Лучше получить false вместо undefined index/offset. К тому же у меня так тоже сделано: https://github.com/Volter9/Trial/blob/maste...DotNotation.php

P.S.: хватит троллить chee smile.gif
Он же не участвует в соревнование длины пиписек CMS biggrin.gif
P.S.S.: не сердитесь за post scriptum smile.gif

_____________
Мой блог
twin
volter9
Цитата
Потому что если вы будете переберать многомерный массив без точек, есть вероятность получить по рукам Warning/Notice: undefined index/offset 'foo'
Дело в том, что я просто подрихтовал метод chee. Перебор массива я вообще не трогал. И если такая вероятность есть, то она есть у обоих. К чести сказать, такой вероятности нет.

Цитата
К тому же у меня так тоже сделано:
Ну и зря))) Я объясню почему, когда chee напишет свой вариант.

Цитата
P.S.: хватит троллить chee
Да кто тролит то... Просто он ведет себя по хамски, а сам на простые вопросы не может ответить. Между прочим я дело говорю, не тупо тролю, как он про пуканы и четвертую версию. Это может действительно кому-нибудь полезно будет.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
volter9
Цитата (twin @ 17.02.2015 - 03:09)
Ну и зря))) Я объясню почему, когда chee напишет свой вариант.

Мне очень интересно как Вы сделаете вот такое без точек:
$array = [
'foo' => [
'bar' => [
'baz' => [
'quax' => [
'tron' => [
'value' => 42
]
]
]
]
]
];


// С моим вариантом:
echo DotNotation::get($array, 'foo.bar.baz.quax.tron.value'); // 42

// Так что ли?!:

echo $array['foo']['bar']['baz']['quax']['tron']['value'];


А что если один из этих индексов не будет существовать?

К тому же у меня в DotNotation есть один нюанс:
У меня сеттер (DotNotation::set($array, $key, $value)) создает пустые массивы что бы продолжить путь, т.е. пример выше мог сократится в:

$array = [];
$key = 'foo.bar.baz.quax.tron.value';

DotNotation::set($array, $key, 42);
echo DotNotation::get($array, $key); // 42


Конечно этот пример (^) абсурдный (зачем в такую даль класть число 42?!) но просто если нужно дерево из массива, то это весьма простой способ наполнить массив. Короче жду Ваш вариант, уж очень интересно :)

_____________
Мой блог
twin
volter9
Цитата
// Так что ли?!:
echo $array['foo']['bar']['baz']['quax']['tron']['value' ];
Именно так.
Цитата
А что если один из этих индексов не будет существовать?
Где? Не понял... Как не существовать? В сессии? Ну и будет null тогда.

Ты не понял просто код. Там такое в принципе не возможно, чтобы нотис был.

Цитата
К тому же у меня в DotNotation есть один нюанс:
Ну я особо не вникал в твою реализацию. Мне интересно, что chee об этом думает. Если интересно мое мнение по твоей - давай в твою ветку пойдем.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
twin, предоставлю сначала ответ, на ваш пример

$session = new Session;
$array = array('key1' => 1, 'key2' => 2, 'key3' => 3);
$i = 0;

foreach ($array as $key => $value) {
if ($i++ % 2 == 0) {
$session->set(implode('.', array($key, $value), $i));
}
}



Если честно, так себе получается, потому я думаю надо отрефакторить и сделать так, что бы туда массив вместо строки передавался, так как это у меня сделано в классе Config.

Если отрефакторить как я написал, то будет так

$session = new Session;
$array = array('key1' => 1, 'key2' => 2, 'key3' => 3);
$i = 0;

foreach ($array as $key => $value) {
if ($i++ % 2 == 0) {
$session->set(array($key, $value), $i);
}
}



Сейчас собственно по целесообразности заполнения сесси таким образом, я очень сомневаюсь, что у меня будут такого рода задачи, а именно по отношению к сессии. Я этот унифицированный интерфейс скопировал даже на авось будут вложеные массивы в сессии, но их пока что нет.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.