使用 Strictus 为 PHP 中的内联变量添加严格类型
发布时间:作者: Paul Redmond
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
如果 float()
接收的不是浮点类型,上面的严格示例将抛出一个 StrictusTypeException
。如果您习惯于使用动态变量,这可能会让人反感,但我认为您应该考虑使用更严格的变量可能带来的帮助。
在撰写本文时,此软件包支持 String
、Float
、Integer
、Boolean
、Array
、Object
、Class
的单一类型和可空类型。
use Strictus\Strictus; Strictus::string($value);Strictus::string($value, true); // nullableStrictus::nullableString($value); // nullable shortcut Strictus::int($value);Strictus::int($value, true); // nullable Strictus::float($value);Strictus::float($value, true); // nullable // And so on...
您可以在 GitHub 上了解更多关于此软件包的信息,获取完整的安装说明,并查看 源代码。