silangtech / silangphp
一个简单易用的php框架
Installs: 321
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 1
Forks: 0
Open Issues: 0
Type:application
Requires
- php: >=7.1.0
- guzzlehttp/guzzle: 6.3
- illuminate/database: v8.24.0
- illuminate/events: v8.24.0
- illuminate/pagination: v8.24.0
- illuminate/validation: v8.24.0
- nesbot/carbon: 2.31
- nikic/fast-route: v1.3.0
- symfony/cache: v5.2.6
- workerman/workerman: 4.0.18
Requires (Dev)
- phpunit/phpunit: ^9.4
- zircote/swagger-php: 3.1.0
This package is auto-updated.
Last update: 2025-03-12 03:10:11 UTC
README
SilangPHP是一款极简http组件,支持Api、Service模式。
说明
非标准化http-message, 路由使用fastroute结合
项目示例
composer create-project "silangtech/silangweb:dev-master" project1
路由
添加路由
addRoute(方法, 路由规则, Callable, middleware);
\SilangPHP\Route::addRoute('GET', 'silangphp/index', '\\App\\Controller\\IndexController@Index');
使用路由组
addGroup(前缀,Callable, middleware);
\SilangPHP\Route::addGroup('silangphp', function(){ \SilangPHP\Route::addRoute('GET', 'index', '\\App\\Controller\\IndexController@Index'); });
全局中件间
\SilangPHP\Route::use(funciton($c){ // 逻辑前 $c->next(); // 逻辑后 });
控制器示例
Class index{ // 一定要加$c参数,主要返回相关的context public function index($c) { } }
request和response
public function index($c) { $c->request->item('test', ''); $c->request->get('test', ''); $c->request->post('test', ''); $c->JSON(200, ['array' => 'test']); $c->String(200, '哈哈'); }
入口
新建好index.php即可
http
// 定义好与vendor同目录即可,加载composer使用 define("PS_ROOT_PATH", dirname(dirname(__FILE__))); // 设置你自己的Config路径, 不然读取不了Config define("PS_CONFIG_PATH", PS_ROOT_PATH."/Config/"); // 设置你项目的tmp路径 define("PS_RUNTIME_PATH", PS_ROOT_PATH."/Runtime/"); // 加载composer require_once(PS_ROOT_PATH."/vendor/autoload.php"); // 这里处理Route include 'Route.php'; // 这里自己思考即可 //运行框架 \SilangPHP\SilangPHP::run();
Command与Service
// 定义好与vendor同目录即可,加载composer使用 define("PS_ROOT_PATH", dirname(dirname(__FILE__))); // 设置你自己的Config路径, 不然读取不了Config define("PS_CONFIG_PATH", PS_ROOT_PATH."/Config/"); // 设置你项目的tmp路径 define("PS_RUNTIME_PATH", PS_ROOT_PATH."/Runtime/"); require_once(PS_ROOT_PATH."/vendor/autoload.php"); // 输入要运行的命令 \SilangPHP\SilangPHP::runCmd($argv[1] ?? '', $argv[2] ?? '');
其它小方法
HTML模板引擎
public function index($c) { $params = ['title' => '首页标题', 'body' => '这是一篇文章']; $c->HTML(200, '/web/index.php', $params); }
临时缓存
\SilangPHP\SilangPHP::setCache('key', 'test'); \SilangPHP\SilangPHP::getCache('key');
动态生成路由配置
$data = scandir($path); // scan之后,把controll读取生成Route配置 // 处理control文件略过 echo "Route::addRoute('POST', '/api/{$classname}/{$funcname}{$vars}', 'mg\\\\http\\\\api\\\\controller\\\\{$classname}@{$funcname}');".PHP_EOL;
workerman守护进程模式
require_once("../vendor/autoload.php"); \App\Router::initialize(); \SilangPHP\SilangPHP::engine(dirname(dirname(__FILE__))); \SilangPHP\SilangPHP::$http = 2; \SilangPHP\SilangPHP::run("8081");
切记:使用这模式需要一定的代码逻辑全面性!!