承接 coders/phastify 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

coders/phastify

最新稳定版本:0.1.0

Composer 安装命令:

composer require coders/phastify

包简介

Like Fastify, but with more $ signs and less performance.

README 文档

README

Like Fastify, but with more $ signs and less performance.

Phastify is a lightweight HTTP framework for PHP inspired by popular Node.js frameworks like Fastify. It provides a simple and intuitive syntax for building APIs and web applications with middleware, hooks, and routing support.

✨ Features

  • 🔥 Simple routing - Fastify-style API with parameter support
  • 🔧 PSR-7 compatible - Built-in PSR-7 HTTP message support
  • 🎯 Hook system - Global and route-specific hooks
  • 🛠️ Middleware support - Easy middleware integration
  • 📝 Fluent Response API - Convenient JSON/HTML response creation
  • Event-driven - Built-in event system

📦 Installation

composer require coders/phastify

🚀 Quick Start

<?php

use Coders\Phastify\Server;
use Coders\Phastify\Request;
use Coders\Phastify\Response;

require_once 'vendor/autoload.php';

$app = new Server();

// Simple route
$app->get('/api/users', function(Request $request, Response $response) {
    return $response->status(200)->send([
        'message' => 'Welcome to Phastify!',
        'users' => ['alice', 'bob', 'charlie']
    ]);
});

// Route with parameters
$app->get('/api/users/{id:\d+}', function(Request $request, Response $response) {
    $id = $request->params['id'];
    return $response->status(200)->send([
        'user' => [
            'id' => (int)$id,
            'name' => 'User ' . $id
        ]
    ]);
});

// Start the server
$app->serve();

📖 Documentation

Routing

Phastify supports all standard HTTP methods:

$app->get('/path', $handler);
$app->post('/path', $handler);
$app->put('/path', $handler);
$app->patch('/path', $handler);
$app->delete('/path', $handler);
$app->options('/path', $handler);

// Multiple methods at once
$app->route(['GET', 'POST'], '/api/health', $handler);

Route Parameters

// Basic parameters
$app->get('/users/{id}', function(Request $request, Response $response) {
    $id = $request->params['id'];
    // ...
});

// Parameters with regex
$app->get('/users/{id:\d+}', function(Request $request, Response $response) {
    $id = $request->params['id']; // numbers only
    // ...
});

Response API

// JSON response
return $response->status(200)->send(['data' => 'value']);

// HTML response
return $response->status(200)->sendHtml('<h1>Hello World</h1>');

// Text response
return $response->status(200)->sendText('Plain text');

// Redirect
return $response->redirect('/login', 301);

// Static methods
return Response::json(['data' => 'value']);
return Response::html('<h1>Hello</h1>');
return Response::text('Hello');

Hook System

Global Hooks

// Executes before each request
$app->onRequest(function($event) {
    [$request, $response] = $event->data;
    echo "Request: {$request->getMethod()} {$request->getPath()}\n";
});

// Executes before handler
$app->preHandler(function($event) {
    echo "Checking authentication...\n";
});

// Executes before sending response
$app->onSend(function($event) {
    echo "Sending response...\n";
});

// Executes after sending response
$app->onResponse(function($event) {
    [$request, $response] = $event->data;
    echo "Response sent: {$response->getStatusCode()}\n";
});

// Executes on errors
$app->onError(function($event) {
    [$request, $response, $error] = $event->data;
    echo "Error: {$error->getMessage()}\n";
});

Route-specific Hooks

$route = $app->get('/api/users', $handler);

$route->preHandler(function(Request $request, Response $response) {
    echo "Validating user data...\n";
});

$route->onSend(function(Request $request, Response $response) {
    echo "User operation completed\n";
});

Request API

// Basic information
$method = $request->getMethod();
$path = $request->getPath();
$query = $request->getQueryParams();
$headers = $request->getHeaders();

// Body and parsed data
$body = $request->getBody();
$parsedBody = $request->getParsedBody();

// Helper methods
$hasToken = $request->hasValidToken(); // checks Bearer token

Middleware

use Coders\Phastify\Middleware\Middleware;

class AuthMiddleware extends Middleware
{
    public function onRequest($event)
    {
        [$request, $response] = $event->data;
        // authentication logic
    }

    public function preHandler($event)
    {
        // logic before handler
    }
}

// Register middleware
$app->register(new AuthMiddleware());

Dispatch vs Serve

// Dispatch - returns Response object
$response = $app->dispatch($request);

// Serve - sends response to browser
$app->serve(); // uses Request::fromGlobals()
$app->serve($customRequest); // with custom request

🔧 Requirements

  • PHP 8.0+
  • Composer

📄 License

MIT License - see LICENSE file.

👨‍💻 Author

Irek Kubicki - github@ixdude.com

🤝 Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

🚧 Project Status

⚠️ Development version - Phastify is under active development. API may change.

"Like Fastify, but with more $ signs and less performance." 😄

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-10-19