jchook / house
House PHP — 一个极简的MVC应用工具集
dev-master
2016-10-20 23:50 UTC
Requires
- php: >=5.4.0
- mthaml/mthaml: ~1.7
This package is not auto-updated.
Last update: 2024-09-18 08:42:00 UTC
README
一个超级极简的纯PHP MVC工具包。
控制器
控制器层是您应用程序的接口。使用它来定义Route
、接受Request
并返回Response
。
Hello World
我们将从app.php
中的Hello World路由开始。
$app = new House\Router; $app->get('/', function($req, $resp){ return 'Hello World'; });
高级路由匹配
路由器简单而强大。
- 精确字符串匹配
- 正则表达式
- 简化表达式
- 任意回调
- 上述数组的组合
尝试这个简化表达式路由,向任意名称问候。
$app->get('/hello/:name', function($req){ return 'Hello ' . $req->param('name'); });
您甚至可以根据条件嵌套路由。
$app->group('/user', function($app){ $app->put(function(){ // Create user }) ->get('/:id', function(){ // Retrieve user }) ->post('/:id', function(){ // Update user }) ->delete('/:id', function(){ // Delete user }); });
您可以使用before()
和after()
将中间件附加到路由上。
$app->before('*', function($req, $resp){ House\Log::info('Request: ' . $req); $resp->code(200); });
您还可以按路由捕获错误。
$app->error('*', function($req, $resp){ House\Log::error($req->exception->getMessage()); return 500; });
注意,控制器返回值传递给$response->write()
。
- 字符串写入响应体
- 整数设置响应代码
- 数组用于Rack风格的响应
请参阅example.php
以获取Router
的更多示例。
模型
模型层非常基础。没有ORM。如果需要更强大的模型层,请参阅Symfony或php-activerecord。否则,请查看以下内容
class User extends House\Model {} // throws House\NotFound User::find(['id' => 1]); // returns array() $users = User::where(['status' => ['active', 'inactive']])->limit(5)->all();
支持的数据库
- MySQL
- 更多即将到来..
视图
视图层几乎可以忽略不计。它如此简单,以至于甚至不需要存在。从控制器方法返回字符串将自动调用$response->write($string)
。
因此,视图辅助函数是任何返回字符串的方法。我们已经捆绑了一些以供您开始,但House可以潜在地支持任何模板引擎、平面文件等。由于House不是一个框架,因此没有特殊的视图注册表或文件夹,因此您可以轻松地使用composer安装替代模板引擎,并直接使用它们。
例如,快速配置您的应用程序使用Haml
House\Haml::config([ 'cache' => sys_get_temp_dir() . '/haml', 'views' => __DIR__ . '/views', ]); function haml($view, $vars = array(), $config = array()) { return new House\Haml($view, $vars, $config); }
然后在您的应用程序中轻松实现它
$app->get('/', function($req){ return haml('index', $req->params()); });