rikudou / scalar-objects
将标量类型作为对象使用的处理器
v2.0.0-BETA
2019-08-27 15:10 UTC
Requires
- php: ^7.1
- ext-mbstring: *
- ext-scalar_objects: >=0.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15
- rikudou/reflection-file: ^1.2.3
This package is auto-updated.
Last update: 2024-08-28 02:30:30 UTC
README
此 PHP 库需要从 https://github.com/nikic/scalar_objects 获取 PHP 扩展。
安装
运行 composer require rikudou/scalar-objects
。
用法
当您包含 composer 自动加载时,处理器会自动注册。这意味着您无需配置即可立即使用它。
由于 IDE 不理解语法,因此提供了类型提示类来帮助您。
示例
<?php use Rikudou\ScalarObjects\TypeHint\IntegerTypehint; use Rikudou\ScalarObjects\TypeHint\StringTypehint; require_once "vendor/autoload.php"; /** @var IntegerTypehint|int $num1 */ $num1 = 5; /** @var StringTypehint|string $num2 */ $num2 = "10"; // the two variables are not actually objects, the typehints // are just for IDE completion var_dump($num1->isInt()); // bool(true) var_dump($num2->isString()); // bool(true) var_dump($num2->isNumeric()); // bool(true) var_dump($num2->isNumber()); // bool(false) - isNumber() returns true only for int and float var_dump($num1->toString()->length()); // int(1) /** @var StringTypehint $string */ $string = "This is a test string"; var_dump($string->length()); // int(21); var_dump($string->capitalize()); // string(21) "This Is A Test String" var_dump($string->caseInsensitiveCompare("this Is a TESt STRInG")); // int(0) var_dump($string->toUpper()); // string(21) "THIS IS A TEST STRING" var_dump($string->toLower()); //string(21) "this is a test string"
如你所见,你可以将标量值作为对象使用。
但您仍然可以像常规标量类型一样使用它们。
<?php use Rikudou\ScalarObjects\TypeHint\IntegerTypehint; use Rikudou\ScalarObjects\TypeHint\StringTypehint; require_once __DIR__."/vendor/autoload.php"; /** @var StringTypehint|string $string */ $string = "test"; $string .= "test"; // works without a problem var_dump($string); // string(8) "testtest" /** @var IntegerTypehint|int $int1 */ $int1 = 5; /** @var IntegerTypehint|int $int2 */ $int2 = -10; /** @var IntegerTypehint|int $int3 */ $int3 = "-15"; var_dump($int1 + $int2->abs()); // int(15) var_dump($int1 + $int2); // int(-5) var_dump($int1 + $int2 + $int3->toInt()->abs()); // int(10)