moehakram/webphp-oop

一个优雅的PHP框架,利用面向对象(OOP)原则简化开发。

安装: 1

依赖: 0

推荐者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

公开问题: 0

类型:项目

dev-main 2024-08-19 15:18 UTC

This package is auto-updated.

Last update: 2024-09-19 15:27:33 UTC


README

关于本项目

此框架是针对原生PHP项目的简单解决方案,它集成了面向对象编程(OOP)原则。它旨在通过提供简化路由管理的工具来促进PHP应用程序的开发。

入门

要开始使用此框架,请按照以下步骤操作

  1. 将此存储库克隆到您的本地目录中。
  2. 运行 composer install 以安装必要的依赖。

用法

配置

数据库配置位于 /config/config.php

要启动本地服务器,请使用以下命令

composer serve

路由模式

路由配置位于 /config/routes.php

// Example: `https://:8080/users/123`
$router->get('/users/:id', function($id, Request $req) {
    return "User ID: " . $id;  // Output: User ID: 123
});

// Example: `https://:8080/users/asd123`
$router->get('/users/:id', function($id, Request $req) {
    return "User ID: " . $id;  // Output: User ID: asd123
});

// Example: `https://:8080/search/name_group/123`
$router->get('/search/:group/:id', function($group, $id, Request $req) {
    return "Group / ID: " . $group . '/' . $id;  // Output: Group / ID: name_group/123
});

回调格式

该框架接受各种回调格式

  1. 数组回调

    回调应为一个包含两个元素的数组:控制器类名和方法名。

    $router->get('/array', [HomeController::class, 'index']);
  2. 字符串回调

    回调应为一个格式为 'Controller@method' 的字符串,其中 Controller 是控制器类名,method 是方法名。

    $router->get('/string', 'HomeController@index');
  3. 可调用回调

    回调应为一个可调用对象,例如闭包、匿名函数或任何定义为可调用的函数。

    $router->get('/anonymous-function', function() {
        return "Hello World";
    });
    
    $router->get('/arrow-function', fn() => "Hello World");

摘要

  • 数组: [ControllerClass::class, 'methodName']
  • 字符串: 'Controller@method'
  • 可调用: function(Request $req) { ... }fn(Request $req) => ...

实现中间件

您可以通过将中间件作为额外参数传递给 get 方法将中间件添加到路由中。

// Middleware example
class AuthMiddleware implements Middleware {
    public function execute(Request $request, callable $next)
    {
        // Authentication logic
        if (!$request->user) {
            return redirect('/login');
        }
        
        return $next($request);
    }
}

// Applying middleware to a route
//$router->get(string $path, $callback, ...$middlewares): void
$router->get('/dashboard', 'DashboardController@index', AuthMiddleware::class);