PHPackages                             gewinum/asyncforms - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. gewinum/asyncforms

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

gewinum/asyncforms
==================

0.2.0(2y ago)44Apache-2.0PHP

Since May 13Pushed 2y ago1 watchersCompare

[ Source](https://github.com/Gewinum/async-forms)[ Packagist](https://packagist.org/packages/gewinum/asyncforms)[ RSS](/packages/gewinum-asyncforms/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (5)Used By (0)

AsyncForms
==========

[](#asyncforms)

Next-generation virion for working with forms.

What's the difference?
======================

[](#whats-the-difference)

This virion works on await-generator, so it makes code cleaner and makes us free from "callback hell"

Example:

```
$form = new SimpleForm(function(Player $player, ?int $answer = null) {
    if (!isset($answer)) {
        $player->sendMessage("Form is closed!");
        return;
    }

    if ($answer !== 0) {
        $player->sendMessage("You've tapped close button!");
        return;
    }

    $form = new SimpleForm(function(Player $player, ?int $answer = null) {
        if (!isset($answer)) {
            $player->sendMessage("Form is closed");
            return;
        }

        if ($answer !== 0) {
            $player->sendMessage("Okay we will not");
            return;
        }

        $player->sendMessage("Yay!");
    });

    $form->setTitle("Great!");
    $form->setContent("We will register you now.");
    $form->addButton("Ok!");
    $form->addButton("No");

    $player->sendForm($form);
});

$form->setTitle("Welcome!");
$form->setContent("Welcome to the server! How can we help you?");

$form->addButton("I want to register!");
$form->addButton("Close");

$player->sendForm($form);
```

Quite messed up, isn't it? This virion makes code much cleaner:

```
$form = new SimpleForm(
    title: "Welcome!",
    content: "Welcome to the server! How can we help you?",
    buttons: [
        "register" => new Button("I want to register!"),
        "close" => new Button("Close")
    ]
);

$player->sendForm($form);
yield from $form->awaitForResponse();
$response = $form->getResponse();

if ($response->isClosed()) {
    $player->sendMessage("Form was closed");
    return;
}

if ($response->getSelectedButton() === "close") {
    $player->sendMessage("Okay we will not");
    return;
}

$form = new SimpleForm(
    title: "Great!",
    content: "We will register you now.",
    buttons: [
        "ok" => new Button("Ok!"),
        "no" => new Button("No")
    ]
);

$player->sendForm($form);
yield from $form->awaitForResponse();
$response = $form->getResponse();

if ($response->isClosed()) {
    $player->sendMessage("Form is closed");
    return;
}

if ($response->getSelectedButton() === "no") {
    $player->sendMessage("Okay we will not");
    return;
}

$player->sendMessage("Yay!");
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 87.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~6 days

Total

3

Last Release

1088d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/fac4d153f29ed278b5c29ffec9614e7cae4c53db16ff098e312aff4550e87a5a?d=identicon)[Gewinum](/maintainers/Gewinum)

---

Top Contributors

[![Gewinum](https://avatars.githubusercontent.com/u/78866820?v=4)](https://github.com/Gewinum "Gewinum (7 commits)")[![poggit-bot](https://avatars.githubusercontent.com/u/22427965?v=4)](https://github.com/poggit-bot "poggit-bot (1 commits)")

### Embed Badge

![Health badge](/badges/gewinum-asyncforms/health.svg)

```
[![Health](https://phpackages.com/badges/gewinum-asyncforms/health.svg)](https://phpackages.com/packages/gewinum-asyncforms)
```

###  Alternatives

[muqsit/invmenu

A PocketMine-MP virion to create and manage virtual inventories!

2234.2k1](/packages/muqsit-invmenu)[muqsit/simple-packet-handler

Handle specific data packets (virion for PMMP API 4.0.0)

426.1k3](/packages/muqsit-simple-packet-handler)[dktapps/pmforms

Form API library for PocketMine-MP plugins

522.3k1](/packages/dktapps-pmforms)[muqsit/asynciterator

A virion that simplifies writing tasks that traverse iterators

182.9k](/packages/muqsit-asynciterator)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
