bottledcode/swytch-framework

一个用于构建Web应用的PHP框架

v0.6.1 2023-12-31 19:51 UTC

README

Swytch框架是一个新生的但功能强大的框架,允许您将HTML与您的应用程序逻辑一起编写,包括API端点。它基于htmx进行浏览器端处理,并使用自定义的流式HTML5解析器来处理HTML和转义。

功能

  • 将HTML与您的PHP代码一起编写,依靠上下文感知的转义。
  • 将您的API逻辑靠近使用它的HTML。
  • 通过HTML进行应用程序路由(类似于ReactRouter)。
  • 自动CSRF保护。
  • 上下文感知的转义。
  • 自动HTML5验证。
  • 授权和认证感知的路由和渲染。
  • 浏览器缓存控制。
  • 内置支持翻译。

注意:此软件目前处于预生产阶段,不建议用于生产环境。

示例应用

以下是一些使用Swytch框架的示例应用

Once

once.getswytch.com上查看实时效果。这是一个秘密消息应用。

身份验证

此应用通过电子邮件发送密码提供简单的身份验证系统。它提供Kubernetes入口身份验证。

示例组件

#[\Bottledcode\SwytchFramework\Template\Attributes\Component('example')]
class ExampleComponent {
    use \Bottledcode\SwytchFramework\Template\Traits\RegularPHP;
    use \Bottledcode\SwytchFramework\Template\Traits\Htmx;
    
    #[\Bottledcode\SwytchFramework\Router\Attributes\Route(\Bottledcode\SwytchFramework\Router\Method::POST, '/api/number')]
    public function getNumber(string $name, string $number): int {
        return $this->render($name, random_int(0, 100));
    }
    
    public function render(string $name, int $number = null): string {
        $this->begin();
        ?>
        <div>
            <h1>Hello, {<?= $name ?>}</h1>
            <form hx-post="/api/number">
                <!-- CSRF protection is automatically added to forms -->
                <input type='hidden' name='name' value={<?= $name ?>} />
                <p>Here is a random number: {<?= $number ?>}</p>
                <button type="submit">Generate a new random number</button>
            </form>
        </div>
        <?php
        return $this->end();
    }
}