okopok/optional

PHP的可选实现

1.0.5 2024-04-12 11:02 UTC

This package is auto-updated.

Last update: 2024-09-12 12:38:49 UTC


README

Java-9 Optional的PHP实现,支持泛型

徽章

PHP Composer And Tests Qodana

特性

  • 完全1:1实现Java-9 Optional API
  • 泛型支持(从概念上讲,显然),适用于对象和基本类型
  • OptionalBoolOptionalFloatOptionalIntOptionalString 已提供
  • 仅一个类,优化性能
  • 生产就绪

使用方法

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