aheinze / lime
PHP 微型框架
1.0.0
2015-08-28 07:42 UTC
Requires
- php: >=5.4.2
This package is not auto-updated.
Last update: 2024-09-22 07:53:22 UTC
README
Lime 是一个用于快速创建 PHP 网络应用的微型 Web 框架,几乎无需费力。
$app = new Lime\App(); $app->bind("/", function() { return "Hello World!"; }); $app->run();
只需包含一个文件 (~ 35KB) 即可开始。
路由
在 Lime 中,路由是一个与 URL 匹配模式配对的 HTTP 方法。每个路由都与一个代码块相关联
$app->get("/", function() { return "This was a GET request..."; }); $app->post("/", function() { return "This was a POST request..."; }); $app->bind("/", function() { return "This was a GET or POST request..."; });
路由按照定义的顺序匹配。首先匹配到请求的路由将被调用。
路由模式可以包含命名参数,可以通过 params 哈希访问
$app->get("/posts/:id/:name", function($params) { return $params["id"].'-'.$params["name"]; }); $app->post("/misc/*", function($params) { return $params[":splat"]; }); $app->bind("#/pages/(about|contact)#", function($params) { return implode("\n", $params[":captures"]); });
条件
路由可以包含各种匹配条件,例如用户代理
$app->get("/foo", function() { // GET request... }, strpos($_SERVER['HTTP_USER_AGENT'], "Safari")!==false);
创建 URL
$route = $app->routeUrl('/my/route'); $url = $app->baseUrl('/assets/script.js');
模板
通常,您可以使用您想要的任何模板引擎。Lime 提供了一个简单的模板引擎
$app->get("/", function() { $data = array( "name" => 'Frank', "title" => 'Template demo' ); return $this->render("views/view.php with views/layout.php", $data); });
views/view.php
<p> Hello <?=$name?>. </p>
views/layout.php
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title><?=$title?></title> </head> <body> <a href="<?=$this->routeUrl('/')?>">Home</a> <hr> <?php echo $content_for_layout;?> </body> </html>
您喜欢面向对象风格吗?
只需绑定一个类
class Pages { protected $app; public function __construct($app){ $this->app = $app; } /* accessible via /pages or /pages/index */ public function index() { return $this->app->render("pages/index.php"); } /* accessible via /pages/contact */ public function contact() { return $this->app->render("pages/contact.php"); } /* accessible via /pages/welcome/foo */ public function welcome($name) { return $this->app->render("pages/welcome.php", array("name"=>$name)); } } // bind Class to map routes $app->bindClass("Pages");
注册表
通过设置键到 $app 对象来存储任何值。
$app["config.mykey"] = array('test' => 123);
带有 /
的路径访问辅助器
$value = $app["config.mykey/test"]; // will return 123
路径
注册路径以快速访问
$app->path('views', __DIR__.'/views'); $view = $app->path('views:detail.php'); $view = $app->render('views:detail.php');
获取文件 URL
$url = $app->pathToUrl('folder/file.php'); $url = $app->pathToUrl('view:file.php');
依赖注入
$app->service("db", function(){ // object will be lazy created after accessing $app['db'] $obj = new PDO(...); return $obj; }); $app["db"]->query(...);
事件
// register callback $app->on("customevent", function(){ // code to execute on event }, $priority = 0); // trigger custom events $app->trigger("customevent", $params=array());
您可以使用三个系统事件:before、after 和 shutdown
// render custom error pages $app->on("after", function() { switch($this->response->status){ case "404": $this->response->body = $this->render("views/404.php"); break; case "500": $this->response->body = $this->render("views/500.php"); break; } });
辅助器
您可以通过使用自定义辅助器来扩展 Lime
class MyHelperClass extends Lime\Helper { public function test(){ echo "Hello!"; } } $app->helpers["myhelper"] = 'MyHelperClass'; $app("myhelper")->test();
内置辅助器
会话
$app("session")->init($sessionname=null); $app("session")->write($key, $value); $app("session")->read($key, $default=null); $app("session")->delete($key); $app("session")->destroy();
缓存
$app("cache")->setCachePath($path); $app("cache")->write($key, $value, $duration = -1); $app("cache")->read($key, $default=null); $app("cache")->delete($key); $app("cache")->clear();