Eldia 是一个轻量级的 PHP 包,为开发者提供了一套额外的助手,以简化常见的编程任务。

1.1 2023-02-18 16:09 UTC

This package is auto-updated.

Last update: 2024-09-30 02:16:00 UTC


README

Eldia 是一个轻量级的 PHP 包,为开发者提供了一套额外的助手,以简化常见的编程任务。该库设计易于使用,具有优雅直观的语法,可以轻松地将强大功能添加到您的 PHP 应用程序中。

Eldia 包含各种助手,可用于处理数组、操作字符串、生成随机数据、处理异常等任务。这些助手旨在易于集成到您的代码中,并可以帮助您编写更干净、更高效的 PHP 代码。

安装

    composer require joodek/eldia

功能

承诺

您是否使用过 JavaScript 承诺,如果是的话,您可能喜欢它们,我也喜欢它们,现在您可以在 PHP 中像这样使用它们:

 use Eldia\Promise\Promise;
 
 Promise::make(function ($success, $reject) {

        if (0) {
            $success('hello world');
        } else {
            $reject('error');
        }
    })

        ->then(fn ($message) => print($message), fn ($reason) => print($reason))

        ->catch(fn ($exception) => print($exception->getMessage()));

您可以使用任意多的 then,每次使用时,您都可以访问最新返回的数据,请看示例

Promise::make(function ($success, $reject) {

    $var = 5 + 5;

    if ($var === 10) $success($var);
    else $reject($var);
})
  ->then(fn ($data) => $data + 5)
  ->then(fn ($data) =>  print  $data) // 15

这适用于 successreject 回调,您甚至可以完全避免使用 reject

 Promise::make(function ($success) {

        if (0) {
            $success('hello world');
        } else{
            // do somthing
        }
    })

        ->then(fn ($message) => print($message))

在承诺回调期间,您对各种错误都安全,除了语法错误,这意味着无论回调中发生什么,都不会发生错误,它只会停止执行回调,但是,如果您出于某种原因想在发生错误时执行一些代码,您可以使用 catch

 Promise::make(function ($success) {

        if (0) {
            $success('hello world');
        } else{
            throw new Exception('error');
        }
    })

        ->catch(fn ($exception) => print($exception->getMessage())) // prints "error"

您甚至可以通过仅键入异常类型提示来捕获特定的错误,类型化异常只有在匹配类型时才会执行

 Promise::make(function ($success) {

    $str = "baz";

    if ($str === "foo") {
        $success('hello world');
    } else {
        throw new ValidationException('error');
    }
})

    ->catch(fn (AuthException $exception) => print($exception->getMessage())) // won't works
    ->catch(fn (ValidationException $exception) => print($exception->getMessage())); // prints "error"