
Борис
13.12.2017
13:49:52
пример.
в студию

Андрэ
13.12.2017
13:50:01
Из формы данные должны приводиться к типам до того, как мы их сравнивать и тп начинаем, как мне кажется

Dmitry
13.12.2017
13:50:25
давай ты начни с примера, как вы говно жрали ;)

Google

Dmitry
13.12.2017
13:50:50

Андрэ
13.12.2017
13:51:12
ты потроллить чисти? тогда мимо

Dmitry
13.12.2017
13:51:19
приводить их нужно, конечно, но это вопрос как раз к мозгам

Андрэ
13.12.2017
13:51:21
иначе не понятно, к чему ты это

Борис
13.12.2017
13:51:26

Dmitry
13.12.2017
13:51:53
не, там примера нет, там такие же "а если да кабы"
вот на днях словил проблему, кстати.... оказывается доктрина bigint из базы конвертит в строку, хотя я ожидал int

Борис
13.12.2017
13:52:29
эээээээээээээ ..... ну ок. пиши == мне пох

Dmitry
13.12.2017
13:52:30
и проверочка была ===

Anton
13.12.2017
13:52:40

Андрэ
13.12.2017
13:52:51
Я тебя вообще не понял, бро. Ты выдумал пример, что кто-то тупит, когда их формы ждет число, а там строка. И мораль вывел какую-то. только не понятно, ты что опроверг то?

Dmitry
13.12.2017
13:53:44
о каком приведении можно говорить, если половина пишет не читая ;)

Google

Борис
13.12.2017
13:54:02

Андрэ
13.12.2017
13:54:04
О каком приведении можно говорить, если в африке дети голодают

Борис
13.12.2017
13:54:12
И продолжаешь спорить.... ну ок

Dmitry
13.12.2017
13:55:35
а без хинтов могла бы быть оказия

$iD
13.12.2017
13:56:03
и все эти кейсы описаны в доке

Dmitry
13.12.2017
13:56:35

$iD
13.12.2017
13:56:57
там написяно почему бигинт должен быть стрингом тож

Dmitry
13.12.2017
13:59:31
да да... потому что BC, полагаю, и проверить PHP_INT_MAX ну никак низя... только, поверь, может ты прежде чем работать с библиотекой зубришь всю документацию и сдаешь строгий экзамен... я нет ;) и это "написано", находится уже после того, как ловится.

Anton
13.12.2017
14:00:42

Андрэ
13.12.2017
14:00:50
Нет ничего страшного не знать об этом. "Страшно" - даже когда узнал, делать вид, что это косяк)

Dmitry
13.12.2017
14:01:17

Anton
13.12.2017
14:02:02

Dmitry
13.12.2017
14:02:46

Anton
13.12.2017
14:03:27

Dmitry
13.12.2017
14:04:29

Anton
13.12.2017
14:06:21
удивись ;) php -r 'var_dump(9223372036854775810);'
о боже. что ты этим хочешь показать? То что есть экспонентное представление числа?
Большие числа — это специальная структура данных. И есть целый класс алгоритмов, которые работают с большими числами.
Такие алгоримты еще называют длинной математикой.

Dmitry
13.12.2017
14:06:43
ты тип данных заметил, да?

Anton
13.12.2017
14:08:22
я наверное не буду больше комментировать. этот спор не имеет никакого смысла для меня.

Google

Dmitry
13.12.2017
14:09:05
вообще ты задал вопрос, я тебе ответил... чего истеришь то?

Антон
13.12.2017
14:12:04
https://github.com/symbios-zi/taxi/blob/master/spec/App/Entity/JourneySpec.php
как тут тестируется класс Journey если он даже не инициализирован?
phpspec через рефлексию его создает?

Max
13.12.2017
14:14:54
а что это за репозиторий?

Антон
13.12.2017
14:15:11
да делаю тестовый проект

Dmitry
13.12.2017
14:15:20
ох, когда уже гитхаб приделает статанализ пхп кода ;)

Anton
13.12.2017
14:15:40
phpspec через рефлексию его создает?
почитай про phpspec.
просто для примера тебе покажу, что там есть метод let который по сути инициализирует.
и там есть такая строчка как beConstructedWith

Антон
13.12.2017
14:16:00
это я понял

Max
13.12.2017
14:16:13

Антон
13.12.2017
14:16:20
предложил @fes0r в чатике симфони, обсуждали как то.

Max
13.12.2017
14:17:31
а на контексты думаешь делить?

Антон
13.12.2017
14:18:13
а на контексты думаешь делить?
ну пока что Сергей сказал делать, так. Потом он будет накидовать требования и видимо когда пойму как тяжело делать так, то переделаю

Max
13.12.2017
14:19:01
было бы норм в виде геркин фич описать

Антон
13.12.2017
14:19:13
тут столько умных людей, было бы больше менторов было бы круто

Max
13.12.2017
14:19:14
потом увидешь как у тебя получаются микросервисы в твоем монолите

Антон
13.12.2017
14:19:51
почитаю что это

Google

Антон
13.12.2017
14:20:15
видимо позиция такая что делать все по надобности, и не заниматься преждевременным реффакторингом
так вопрос не об этом. beConstructedWith как порождает объект исследуемый? так понимаю наследуется от него?

Sergo
13.12.2017
14:22:14

Антон
13.12.2017
14:22:45
/**
* The object behaviour is the default base class for specification.
*
* Most specs will extend this class directly.
*
* Its responsibility is to proxy method calls to PhpSpec caller which will
* wrap the results into PhpSpec subjects. This results will then be able to
* be matched against expectations.
Most specs will extend this class directly.
видимо ключевое предложение

Vladislav
13.12.2017
14:23:04
strict types вроде >= 7.0

Alexander
13.12.2017
14:33:43

Dmitry
13.12.2017
14:34:02
кто? пхп?

Alexander
13.12.2017
14:34:09
да

Admin
ERROR: S client not available

Dmitry
13.12.2017
14:34:21
мм... тебе все выше этого сообщения пересказать? ;)

Alexander
13.12.2017
14:35:28
"ну, это не косяк, а неожиданное поведение... пхп вообще справляется с большими числами посредством перевода их во float"
почему это неожиданное поведение? и какое для тебя было бы ожиданное?

Dmitry
13.12.2017
14:36:02
ну ты понял про что "неожиданное поведение" было про доктрину?

Alexander
13.12.2017
14:36:44

Dmitry
13.12.2017
14:37:15
ну вот... "ожиданное" было бы такое, как и пхп.. т.е. не в строку давать, а, в зависимости от значения, int или float
хм, может оно чем-то хуже и я не вижу подводных камней...

Stephen
13.12.2017
16:01:42
Ребзя, а есть какое-то понятное описание принципа подстановки Лисков? Желательно хотя бы один пример не про прямоугольник и квадрат )

Sergo
13.12.2017
16:02:11

Dmitry
13.12.2017
16:10:30

Stephen
13.12.2017
16:13:40

Google

Stephen
13.12.2017
16:14:39
Все остальные - это я про SOLID

Dmitry
13.12.2017
16:17:15
ну у тебя есть function bar (A $a) {}... и есть class B extends A {}. Ты всегда должен мочь сделать bar(new B())... что из этого следует? Если ты в B переопределяешь какие-то методы, то ты не должен вносить больше ограничений на входные параметры в этом ограничении
наприме в A есть function myA(int $id) { if ($a > 10) throw new \Exception(); } то в B ты не можешь переопределить вот так function myA(int $id) { if ($a > 5) throw new \Exception(); } .... ибо для $a->myA(7) - валиден, а для $b->myA(7) - нет, будет ошибка, а код этого не ожидает
короче, код, который писался с огладкой на использование класса A - должен работаь и если ему передать B :)

Stephen
13.12.2017
16:28:09

Dmitry
13.12.2017
16:31:06
о, как быть - это сложный вопрос ;)

Stephen
13.12.2017
16:32:35

Борис
13.12.2017
16:33:29

Dmitry
13.12.2017
16:35:34
на самом деле пример у меня плохой, там как раз нарушения нет
а вот если в а исключения не было бы, а в б появилось, вот тогда будет

Stephen
13.12.2017
16:39:20
Ведь нельзя же будет просто так подменить экземпляр SportCar на HeavyCar.

Борис
13.12.2017
16:42:01
Нарушение будет, когда у тебя что то на вход принимает base Car, но работает, по факту, только с sort car. Если туда подсунуть heavy car то все сломается. Вот это нарушение.
Наследник не должен быть написан так, чтобы ломал тот код(сторонний код, третий код), который работает с потомком.
Далее если в жизни два объекта это наследники друг друга, как квадрат и прямоугольник

Dmitry
13.12.2017
16:44:26
наоборот мб?
потомок не должен ломать родителя?
потомок не должен ломать код, работающий с родителем?
хотя наследник это ведь тоже самое что и потомок
не наоборот, а под потомоком видимо имелся в виду родитель?

Stephen
13.12.2017
16:48:49
Ладно, спасибо, буду дальше вникать )

Dmitry
13.12.2017
16:58:03
смотри, был у тебя car, он принимал любой setspeed.... и ты не парился вообще, и везде делал ->setSpeed(); а потом появился heavycar и ты сидишь, думаешь... а как же сделать так,что бы нельзя было ставить ->setSpeed(250).... в принципе, любое, что придумаешь - скорее всего нарушит LSP. Кинишь исключение - но у тебя код, который раньше работал со спорткаром не ожидает исключение - программа просто упадет... проигнорируешь - тоже плохо, тебе скорость изменили, а ты не бе не ме... в принципе, можешь на ->setSpeed(250) поставить внутри $this->_speed = 80... но тут опять же, зависит от того, как объект используется, например, ты поставил скорость 250 и знаешь, что приедешь в город через час (посчитал), а реально - не приедешь, ибо реальная скорость 80
Как справляться? рефакторить, например ;)