strukt / router
Strukt Router
v1.1.5-alpha
2024-05-22 18:22 UTC
Requires
- php: ^8.1
- strukt/contract: v1.1.1-alpha
- symfony/http-foundation: ^4.1
Requires (Dev)
- phpcompatibility/php-compatibility: dev-develop
- phpcsstandards/phpcsutils: ^1.0@dev
- phpunit/phpunit: *
This package is auto-updated.
Last update: 2024-09-06 20:07:53 UTC
README
入门
快速开始
创建以下内容的 composer.json
脚本,然后运行 composer update
{ "require":{ "strukt/router":"v1.1.3-alpha" }, "minimum-stability":"dev" }
您的 index.php
文件。
require "vendor/autoload.php"; use Strukt\Http\Request; // use Strukt\Http\Response\Plain as Response; $app = new Strukt\Router\QuickStart(); $app->get("/", function(Request $request){ // return new Response("Hello World!"); return "Hello World!"; }); exit($app->run());
高级路由(细节部分)
权限
$app->inject("permissions", function(){ return array( // "show_secrets" ); }); $app->providers(array( //App\Provider\ExampleProvider::class )); $app->middlewares(array( Strukt\Router\Middleware\Session::class, Strukt\Router\Middleware\Authentication::class, Strukt\Router\Middleware\Authorization::class, )); $app->get("/user/secrets", function(){ return "Shh!"; },"show_secrets"); exit($app->run());
身份验证
$app->inject("permissions", function(){ return []; }); $app->inject("session", function(){ return new Strukt\Http\Session\Native; }); $app->inject("verify", function(Strukt\Http\Session\Native $session){ $user = new Strukt\User(); $user->setUsername($session->get("username")); return $user; }); $app->providers(array( //App\Provider\ExampleProvider::class )); $app->middlewares(array( Strukt\Router\Middleware\Session::class, Strukt\Router\Middleware\Authentication::class, Strukt\Router\Middleware\Authorization::class, )); $app->post("/login", function(Strukt\Http\Request $request){ $username = $request->get("username"); $password = $request->get("password"); $request->getSession()->set("username", $username); return new Strukt\Http\Response\Plain(sprintf("User %s logged in.", $username)); }); $app->get("/current/user", function(Strukt\Http\Request $request){ return $request->getSession()->get("username"); }); $app->get("/logout", function(Strukt\Http\Request $request){ $request->getSession()->invalidate(); return new Strukt\Http\Response\Plain("User logged out."); }); exit($app->run());
环境
安装后运行 composer exec static
以获取 public\
目录。
public/
├── errors
│ ├── 403.html
│ ├── 404.html
│ ├── 405.html
│ └── 500.html
└── static
├── css
│ └── style.css
├── index.html
└── js
└── script.js
Apache
.htaccess
文件
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
顺便说一句,数据库小贴士...
Adminer 是一个非常棒的工具!它是一个单文件数据库管理员工具,可以很容易地放置在路由器下!下载 adminer.php 文件并将其放置在根目录下。
$app->any("/dba", function(Request $request){ include "./adminer-x.x.x.php"; return new Strukt\Http\Response\Plain(); });
干杯!