@phpgeeks

Страница 4698 из 8430
0x9d8e
27.04.2017
14:31:21
а что за сервис? каким образом он получает данные?

Al
27.04.2017
14:31:37
правда, к БД я подключаюсь из вне

БД на другом сервере

0x9d8e
27.04.2017
14:31:49
если это яндекс/гугл, то эти переходы могли до страницы вообще не дойти

Google
Al
27.04.2017
14:32:01
а что за сервис? каким образом он получает данные?
немогу сказать, сейчас мы с ним выясняем у кого правильно считает)

0x9d8e
27.04.2017
14:32:04
и при этом сервису известны

Al
27.04.2017
14:32:08
оба простенькие скрипты

записывает в БД стандартную инфу, юерагент, ип, время и т.д.

0x9d8e
27.04.2017
14:32:45
можно попробовать в лог-файл с блокировкой писать

и справнить потом

Al
27.04.2017
14:32:59
таблица у меня инно

хм..

нужно попробовать

0x9d8e
27.04.2017
14:34:04
в идеале даже не в файл, а в файлы с хешем/таймштампом в названии

но и блокировка на время записи прокатить должна

ну чтобы небыло такого, что потоки одновременно писали и перетёрли друг-друга

Google
Al
27.04.2017
14:35:13
LOCK_EX или как там?)

с блокировкой потери исключены?

0x9d8e
27.04.2017
14:35:38
чёт такое, надо в доки глянуть

насчёт 100% исключены не скажу, но не должно бы быть

Roquie
27.04.2017
14:36:41
Ребята, угадайте какой вывод будет в php7.1: $array = [['foo' => 'bar']]; foreach($array ?? [] as & $item) { $item['key'] = 'value'; } var_dump($array);

0x9d8e
27.04.2017
14:36:43
Типа файл открыли, заблокировали, записали, закрыли, разблокировали. Пока он заблокирован другие потоки ждут.

f4rt~
27.04.2017
14:36:58
на цифрах скажу)

уже кидал такой пример

Roquie
27.04.2017
14:37:21
на фубарах сложно сказать
фубары в самый раз тут

f4rt~
27.04.2017
14:37:27
f4rt~
27.04.2017
14:37:55
Roquie
27.04.2017
14:38:06
0x9d8e
27.04.2017
14:38:07
чего гадать то

Roquie
27.04.2017
14:38:24
-

по хорошему должен доабвиться ключик key со значением

f4rt~
27.04.2017
14:38:55
фубары в самый раз тут
$var = [1,2,3]; foreach($var as &$i){ echo $i; } foreach($var as $i){ echo $i }

Evgeny_30
27.04.2017
14:39:20
счетчик пошел вверх, значит на гиксах весело =)))

0x9d8e
27.04.2017
14:39:28
по хорошему должен доабвиться ключик key со значением
ну вот интерпретатор как-то иначе считает

Google
Roquie
27.04.2017
14:40:38
$var = [1,2,3]; foreach($var as &$i){ echo $i; } foreach($var as $i){ echo $i }
и? не понял, что ты хочешь этим сказать

Evgeny_30
27.04.2017
14:42:33
Фарт

f4rt~
27.04.2017
14:42:38
м

Evgeny_30
27.04.2017
14:43:38
а тут как в С & ссылка?

f4rt~
27.04.2017
14:43:55
а так

Roquie
27.04.2017
14:47:00
123122
Это то да. Не вижу связи, кроме как применения ссылки в обоих примерах. Если изменить немного пример, тогда будет работать ожидаемо: $array = [['foo' => 'bar']]; $array = $array ?? []; foreach($array as & $item) { $item['key'] = 'value'; } array(1) { [0] => array(2) { 'foo' => string(3) "bar" 'key' => string(5) "value" } }

Roquie
27.04.2017
14:48:16
тем не менее, я не ожидал увидеть этого в семерке, там много неочевидностей с форычем убрали

Roquie
27.04.2017
14:50:36
с передачей по ссылке столько всего было пздц
вот еще ;) $array = [['foo' => 'bar']]; $arr = (function () use ($array) { return $array ?? []; })(); foreach($arr as & $item) { $item['key'] = 'value'; } тоже без key останешься

Roquie
27.04.2017
14:51:03
:D

я сам до этого дошел

0x9d8e
27.04.2017
14:53:59
эти "wtf" больше к авторам такого кода, чем к языку

я охреневаю, когда пишут такой бред и жалуются что он "не так" работает

Evgeny_30
27.04.2017
14:54:53
Это принципы, а не паттерны
Тебе не лень было это сообщение искать?

Google
Evgeny_30
27.04.2017
14:55:13
Просто мне помнится вы днем по этим принципам катались

da horsie
27.04.2017
14:55:25
Тебе не лень было это сообщение искать?
Я не искал, оно у меня высветилось само

Evgeny_30
27.04.2017
14:56:04
Ааа

кто как делает диаграммы классов

Евгений
27.04.2017
14:56:50
телеграм уже сам подсказывает коню )

f4rt~
27.04.2017
14:56:57
Я не искал, оно у меня высветилось само
Коняш, знаешь какие-то php wtf ?:)

Muzaffar
27.04.2017
14:58:27
Владимир
27.04.2017
14:58:55
кто как делает диаграммы классов
еще спроси, кто тестирует не на продуктиве)

Evgeny_30
27.04.2017
15:00:21
Ну хрен знает, заставляют же иной раз

Admin
ERROR: S client not available

Roquie
27.04.2017
15:00:52
я охреневаю, когда пишут такой бред и жалуются что он "не так" работает
ну вот например конструкция вида foreach($array ?? [] as & $item) вполне себе стала обычной после ввода ?? оператора в php 7. В принципе как и foreach($array as & $item) тоже обыденная вещь.

я бы не сказал, что это лютый пиздец, если бы не этот нюанс.

0x9d8e
27.04.2017
15:02:56
Roquie
27.04.2017
15:04:11
items вполне себе может отсутствовать

Google
Евгений
27.04.2017
15:04:56
пздц это так echo print(6) .print(7) . print(8);
результат довольно любопытный

Евгений
27.04.2017
15:05:22
ожидаешь 817161

0x9d8e
27.04.2017
15:05:50
гм, вот тебе реальный пример: foreach($array['items'] ?? [] as & $item)
Да тож уже косяк. Ибо тут ассоциативный массив используется в качестве структуры. А в качестве структур в пхп есть классы. В классах есть конструкторы.

f4rt~
27.04.2017
15:06:02
ожидаешь 817161
точка прикольные вещи сыграла на самом деле)

Евгений
27.04.2017
15:07:19
я проверил уже же

0x9d8e
27.04.2017
15:07:47
По ассоциативному массиву надо бегать через foreach($array as $key => $value) а не ко константным ключам. Ибо если там константные ключи, значит это и не хеш уже, а класс сделанный из массива)

Евгений
27.04.2017
15:07:48
я думал, будет либо 817161 либо 617181 либо 678111

и ни разу не угадал

0x9d8e
27.04.2017
15:09:08
По мне так главный косяк пхп не в том, что он такие вещи неожиданно выполняет. а в том, что не вылетает с синтаксической ошибкой.

Евгений
27.04.2017
15:09:30
в каком случае?

Roquie
27.04.2017
15:10:28
По ассоциативному массиву надо бегать через foreach($array as $key => $value) а не ко константным ключам. Ибо если там константные ключи, значит это и не хеш уже, а класс сделанный из массива)
Если у тебя массивчик большой, жирный, вложенный и ассоциативный, (например json_decode от вывода апи) и лишний раз описывать гидрировальщик тебе лень, то работать с вложенным ассоциативным массивом через $array['items'] так или иначе приходится и в принципе, это нормальная практика.

0x9d8e
27.04.2017
15:16:37
Если у тебя массивчик большой, жирный, вложенный и ассоциативный, (например json_decode от вывода апи) и лишний раз описывать гидрировальщик тебе лень, то работать с вложенным ассоциативным массивом через $array['items'] так или иначе приходится и в принципе, это нормальная практика.
Тогда берём, да пишем валидацию, прежде чем работать. И пускай эта валидация явным образом проверит, кинет исключения/приведёт тип (тот самый $array['items'] = $array['items'] ?? [];). И уже потом обрабатываем. При этом код получается яснее и проще. В одном месте исключительно проверки, в другом исключительно логика без всяких проверок. Ну на 2 минуты дольше печатать. Зато читать, править и дебажить быстрее.

Ну сейчас в эту сторону пошли потихоньку.
Да, тайп-хинтингу и строгой типизации я рад больше всего что вообще в 7 появилось.

0x9d8e
27.04.2017
15:21:45
$array['items'] ?? [] это уже "валидация"

просто тут оно с обработкой перемешано

а можно сделать до

Страница 4698 из 8430