• Время чтения ~1 мин
  • 07.06.2023

Strictus - это пакет, который обеспечивает строгую типизацию встроенных переменных для PHP. Учитывая следующий пример, PHP не имеет способа принудительно применять строго типизированные встроенные переменные:Используя класс Strictus, приведенный выше пример кода теперь выглядит следующим образом:

// Rule: Active discount of 10% or 25% for orders from $50
$total = 82.50;
$discount = 0.10; // Float

if ($total >= 50) {
    $discount = '25%'; // Replacing a float value with string value 🤦🏻‍♂️
}
$total = $total - ($total * $discount); //💥 Error: A float cannot be multiplied by a string

use Strictus\Strictus;

$total = Strictus::float(82.50);
$discount = Strictus::float(0.10);

if ($total() >= 50) {
    $discount(0.25); // Updates the $discount value
}
$total($total() - ($total() * $discount()));

echo $total(); // 61.875

Приведенный выше строгий пример выдает StrictusTypeException float() if получает что-либо, кроме типа float. Это может оттолкнуть, если вы привыкли к динамическим переменным, но я думаю, что вам следует подумать о том, как более строгие переменные могут помочь.

На момент написания статьи этот пакет поддерживает одиночные типы и типы, допускающие значение NULL, для String, , Integer, Вы можете узнать больше об этом пакете, ObjectFloatArrayClassBoolean

use Strictus\Strictus;

Strictus::string($value);
Strictus::string($value, true); // nullable
Strictus::nullableString($value); // nullable shortcut

Strictus::int($value);
Strictus::int($value, true); // nullable

Strictus::float($value);
Strictus::float($value, true); // nullable

// And so on...

получить полные инструкции по установке и просмотреть исходный код на GitHub.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297