
Sergey
20.03.2017
08:55:07
```
$var = 42; // нет стэйта
$var = foo($var); // стэйт
```

Aleh
20.03.2017
08:59:53
так человек выше ж наверное не хотел стейт, а хотел именно алиасы для промежуточных вычислений

Sergey
20.03.2017
09:00:19
ну как тебе сказать, если ты поменял местами строчки то у тебя будет другой результат
а это как бэ и есть стэйт)

Google

Artem
20.03.2017
09:00:24
насчёт этого примера я не скажу - плохо знаю теорию по части точного определения термина "состояние". Но на вид второе обращение $var вполне определяется даже при компиляции и разворачивается в цепочку вызовов так же просто, как и с константами. Скажем, если во второй строке $var заменить на $var_v2, то пременные станут константами, а по сути код не поменяется

Sergey
20.03.2017
09:00:27
привязка ко времени)

Aleh
20.03.2017
09:01:15
ну еще может быть привязка к отступам

Sergey
20.03.2017
09:01:29

Artem
20.03.2017
09:01:31
вот с циклами а-ля for i = ... i++ уже такое не прокатит

Aleh
20.03.2017
09:01:34
в любом случае это компайл-тайм проверка

Sergey
20.03.2017
09:01:57
range(limit).map(fn)
а вот тут нет стэйта

Artem
20.03.2017
09:04:18
var r = range(limit); r.map(fn) - тоже нет

Aleh
20.03.2017
09:04:39
чат по пыху блин, где баксы и стрелки?
$r = range($limit); $r->map($fn);

?
20.03.2017
09:04:57
да!

Google

?
20.03.2017
09:05:15

Artem
20.03.2017
09:06:02
ну если уж так уж говорить, то как минимум одна переменная есть всегда - идентификатор/указатель/позиция выполняемой сейчас инструкции, поэтому я даже и не знаю что считать стейтом, а что - нет. Вообще я стейтом всегда считал глобальное состояние, а функция внутри себя может делать что угодно хоть с переменными, хоть с константами, лишь бы побочных эффектов не было (читай, не менялся глобальный стейт)
ну то есть использование _локальных_ перменных точно не делает функцию не чистой

Aleh
20.03.2017
09:07:28

?
20.03.2017
09:07:45
$r->map($fn);

Aleh
20.03.2017
09:08:15
$fn = function(int $value, int $index, $array) { return $value + 1; }

?
20.03.2017
09:08:45
range != object
range === function
use array_map

Aleh
20.03.2017
09:09:56
function range($limit) {
$a = new MyCoolArray;
// filling $a
return $a;
}

?
20.03.2017
09:10:32
ok

Sergey
20.03.2017
10:02:08
```
range(limit)
|> map(_, fn)
```

Vadim
20.03.2017
10:03:48
о, чего тут, за эликсир задвигают?)

Василий
20.03.2017
10:06:10

енот
20.03.2017
10:07:31
че эт?
у них абсолютно разные сферы применения, у пхп и эликсира

Artem
20.03.2017
10:07:41

Sergey
20.03.2017
10:09:14
ну то есть просто разные подходы, промежуточные переменные я считаю наименее выгодной

Google

Artem
20.03.2017
10:09:26
это ко вчерашнему разговору уже :)

Sergey
20.03.2017
10:09:43

Artem
20.03.2017
10:10:05
в качестве документации?

Sergey
20.03.2017
10:10:10
единственная причина их юзать - отсутствие альтернативы (пайп операторов например)
обычно меня интересуют операции а не данные
но если у тебя есть такой - поделись, будет полезно

Artem
20.03.2017
10:11:23
тут я с тобой согласен скорее
о, новый наборчик стикеров :)

Виктор
20.03.2017
11:18:08
Всем привет!
В php5.6 есть фича - https://lornajane.net/posts/2014/php-5-6-and-the-splat-operator
Кто знает как реализовать то же поведение в версии 5.5?

Василий
20.03.2017
11:18:54
через $args?

Artem
20.03.2017
11:18:56
func_get_args()
а вызов через call_user_func_array()

Виктор
20.03.2017
11:19:40
не, func_get_args() - это получение аргументов в функции.
А мне нужно передавать в функции заранее неизвестрое число элементов

Василий
20.03.2017
11:19:46
http://php.net/manual/en/function.func-get-args.php

Ivan
20.03.2017
11:19:56
ну так и передавай

Василий
20.03.2017
11:20:03
ну так и передавай. и указаной функцией читай

Viktor
20.03.2017
11:20:05

Google

Aleh
20.03.2017
11:20:51
в доме который построил Джек

Ivan
20.03.2017
11:22:01
джек ? :)

Виктор
20.03.2017
11:24:23
Еще раз - вопрос не в том как получить аргументы, а в том как передать их
Пример:
<?php
$arr = ['param1', 'param2','param3'];
func(...$arr);
В 5.6 в функцию придут 3 параметра, если в $arr добавить 'param4', то в функции будет 4 параметра. Но в php5.5 нет оператора "...".
Вопрос в том, как динамически изменять число параметров функции в 5.5?

Sergey
20.03.2017
11:24:47
а вызов через call_user_func_array()

Aleh
20.03.2017
11:25:08
http://php.net/manual/en/function.call-user-func-array.php

Roman ?
20.03.2017
11:25:18
вторым аргументом принимает массив с параметрами

Виктор
20.03.2017
11:27:52
а через эту функцию получится пробросить параметры в конструктор? Как-то так call_user_func_array(new Object, $params)

Ivan
20.03.2017
11:30:36
не. первым параметром должен быть параметр типа callable

Admin
ERROR: S client not available

Artem
20.03.2017
11:34:36

/
20.03.2017
11:35:56

Виктор
20.03.2017
11:40:26
Благодарю за помощь!

Румын
20.03.2017
12:15:11
Всем привет
Господа а есть в php механизм какойнить построения сложных отчетов?

Ivan
20.03.2017
12:17:02
PHPOffice?

Румын
20.03.2017
12:19:08
Спасибо, поглядим

Vadim
20.03.2017
14:15:55
Есть у кого чатик по расту?)

Aleh
20.03.2017
14:16:37
https://telegram.me/proRust

Vadim
20.03.2017
14:39:07

Artem
20.03.2017
14:52:17
Don’t miss the JetBrains webinar Why Postgres Should Be Your Document Database starting in just 30 minutes, Monday, March 20th, at 3:00 PM - 4:00 PM GMT.

Google

Aleh
20.03.2017
14:52:35
ссылочкой бы

Artem
20.03.2017
14:52:38
https://global.gotowebinar.com/join/6383394356580452099/404748305

Aleh
20.03.2017
14:52:41
норм

Artem
20.03.2017
14:52:50
через 8мин

Sergey
20.03.2017
18:28:27
для тех кто в киеве и будет скучно http://phpfriends.club/meetups.html

Vadim
21.03.2017
07:58:38
кто там вчера пайпы хотел?) https://gist.github.com/TazeTSchnitzel/33cf828bfa306b1b1d2187a6de639375

Artem
21.03.2017
08:01:40
аватарка огонь

Ivan
21.03.2017
08:02:38
код конечно выглядит страшно)

Aleh
21.03.2017
08:04:29
Норм решение)

Artem
21.03.2017
08:05:01
а чего это там контекст теряется, должно-то быть ✨("foo")->strlen()->var_dump(), иначе смысл теряется. Или я чего-то не понимаю?

Aleh
21.03.2017
08:05:42
Фиксани)

Artem
21.03.2017
08:05:50
он там private $_ сохраняет, но нигде не использует
было бы удобнее другое - конструировать цепочку трансформаций и потом её переиспользовать, например:
$chain = wtf()->trim()->str_replace('a', 'b')->str_replace('bb', 'cc')->urlencode();
$result1 = $chain->apply('some string 1');
$result2 = $chain->apply('some string 2');

Василий
21.03.2017
08:25:44
$chain = new stdClass();
$chain->apply = function() { -> -> -> }

Sergey
21.03.2017
08:27:50
вот только порядок аргументов еще важен
$ret = scandir($arg)
|> array_filter($$, function($x) { return $x !== '.' && $x != '..'; })
|> array_map(function ($x) use ($arg) { return $arg . '/' . $x; }, $$)
|> getFileArg($$)
|> array_merge($ret, $$);

Artem
21.03.2017
08:28:17
т.е. этоо всё обернётся в кучку лямбд

Sergey
21.03.2017
08:28:44
и да, еще потеряется поддержка ide

Василий
21.03.2017
08:31:33