@prophp7

Страница 297 из 1387
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
var r = range(limit); r.map(fn) - тоже нет
но тебе ж не нужна эта штука) а если еще pipe оператор

``` 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
но тебе ж не нужна эта штука) а если еще pipe оператор
изначально, насколько я понял, речь шла про любые промежуточные переменные. Например, можно их для самодокументируемости использовать или как альяс, чтобы два раза не писать одно и то же

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
ну так и передавай. и указаной функцией читай

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
а через эту функцию получится пробросить параметры в конструктор? Как-то так call_user_func_array(new Object, $params)
в конструктор только через рефлекшн: http://php.net/manual/ru/reflectionclass.newinstanceargs.php

Виктор
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
$chain = new stdClass(); $chain->apply = function() { -> -> -> }
ну кокретно так не будет работать, $chain->apply() будет искать метод apply, а не свойство. Но ещё же надо учесть, что аргументы надо биндить как-то

т.е. этоо всё обернётся в кучку лямбд

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

Василий
21.03.2017
08:31:33
ну кокретно так не будет работать, $chain->apply() будет искать метод apply, а не свойство. Но ещё же надо учесть, что аргументы надо биндить как-то
Это подковырки уже. Понятно дело, что можно создать фабрику, которой на вход передавать имя функции с пайпом (использовать через __call внутри, а параметры через use или func_get_args)

и да, еще потеряется поддержка ide
вот это самая проблема. поддержка иде - экономия времени работы программера, самого дорогого ресурса.

Страница 297 из 1387