Pull to refresh

Comments 11

Пожалуйста, не надо перегрузки операторов.

$object1 + $object2

Ранее всегда было ясно, что в данном контексте в условно хорошем коде будут int/float.

Иногда нужно работать либо с большими числами, либо с числами с фиксированной точностью, либо с большой мантиссой. Для этого в PHP удобных нативных инструментов нет.

Для организации Decimal существует экстеншн: https://github.com/php-decimal/ext-decimal. Как раз там как бы реализована перегрузка операторов на уровне экстеншна, то есть:

$foo = new Decimal("0.1");
$bar = new Decimal("0.2");

$baz = $foo + $bar;
echo $baz->toString(); // "0.3"

Также небезвестное решение: https://github.com/brick/math. В этом случае используются методы вроде sum(...)

Всё же, привычные арифметические операторы были бы удобны здесь. Но остаётся открытым вопрос сложения, например, нативного int с каким-то BigInteger.

Хотелось бы остановиться на том, что результатом операций с привычными бинарными операторами будут числа в том или ином представлении (тот же BigInteger или Decimal). Дальше уже вопросы типизации.

Мне кажется тут давно нет вопросов:

UFO just landed and posted this here
UFO just landed and posted this here

Так ведь это union только для хэшей

так я и пишу, что оператор "+" уже занят

Уже довольно давно это совсем не очевидно:

Просто можно было делать только из расширений, а не из самого языка.

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

Что касается варианта реализации:
с одной стороны, хорошо бы придерживаться тех. же магических методов,
но с другой стороны:
1. будут сложности с неймингом операторов.
2. кол-во маг. методов будет сильно возрастет.

мне кажется, вариант с operator лучше.

Shardj/zf1-future — Ребятки поддерживают форк ZendFramework 1 совместимый с PHP 8.

Никак не закопают стюардессу :)

Macroable из фреймворка Laravel — совершенно ужасная фича, убивающая статанализ и рефакторинг.

Sign up to leave a comment.

Articles