okopok / optional
PHP的可选实现
1.0.5
2024-04-12 11:02 UTC
Requires
- php: >=8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.53
- phpstan/phpstan: ^1.10.55
- phpunit/phpunit: ^10.5.5
README
Java-9 Optional的PHP实现,支持泛型
徽章
特性
- 完全1:1实现Java-9 Optional API
- 泛型支持(从概念上讲,显然),适用于对象和基本类型
OptionalBool
、OptionalFloat
、OptionalInt
、OptionalString
已提供- 仅一个类,优化性能
- 生产就绪
使用方法
echo OptionalString::of('hello')->orElse('world');// echo 'hello' echo OptonalInt::ofNullable(null)->orElse(42);// echo 42
泛型
/** * @method Book get() * @method Book|null orElse($other) * @method Book orElseGet(callable $supplier) * @method Book orElseThrow(callable $exceptionSupplier) */ class OptionalBook extends AbstractOptional { /** * @inheritdoc */ protected function supports($value) { return $value instanceof Book; } } $book = new Book() $optBook = OptionalBook::of($book);
http://download.java.net/java/jdk9/docs/api/java/util/Optional.html
https://www.mkyong.com/java8/java-8-optional-in-depth/
http://blog.codefx.org/java/dev/java-9-optional/
http://iteratrlearning.com/java9/2016/09/05/java9-optional.html