• Час читання ~1 хв
  • 07.06.2023

Strictus - це пакет, який забезпечує строгий набір тексту до вбудованих змінних для PHP. З огляду на наступний приклад, PHP не має способу застосовувати сильно типізовані вбудовані змінні:

// 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

Використовуючи клас Strictus, наведений вище приклад коду тепер виглядає наступним чином:

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() якщо отримує що-небудь, крім типу float. Це може бути неприємно, якщо ви звикли до динамічних змінних, але я думаю, що вам слід подумати, як наявність більш суворих змінних може допомогти.

На момент написання статті цей пакунок підтримує окремі типи та нульові типи для String, , , , BooleanArrayObjectВи

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...

Class можете дізнатися більше про цей пакет, FloatIntegerотримати повні інструкції щодо встановлення та переглянути вихідний код на 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