Lumen Tips

爱屋及乌,与其说laravel,其实更爱slim,它们的产物是一种怎样的新体验,以下内容均假设lumen路径为LUMEN_PATH。

1.网站根路径

是的,如果你将lumen放置到apache或其他web服务器下的时候,注意需将lumen下的public设置为网站根目录;或者直接使用PHP内置服务器php -s localhost:8000 -t public;或者使用ARTISAN来运行服务php artisan serve。以上2命令均在LUMEN_PATH下执行。

2.开启DEBUG

将LUMEN_PATH下的.env.example更名为.env,并且其中”APP_DEBUG=true”,但就是没有错误提示信息,需要修改LUMEN_PATH/bootstrap/app.php,取消注释即可:

Dotenv::load(__DIR__.'/../');

3.使用中间件

假设创建一个简单的验证中间件。

(1).创建LUMEN_PATH/app/Http/Middleware/AuthMiddleware.php

<?php

namespace App\Http\Middleware;

use Closure;

class AuthMiddleware {
    function handle($request, Closure $next) {
        return $next($request);
    }
}

(2).注册中间件

修改LUMEN_PATH/bootstrap/app.php,如果所有路由都需要验证,则直接添加类库的完整路径到全局中间件:

$app->middleware([
    'App\Http\Middleware\AuthMiddleware'
]);

如果只是部分路由使用该中间件,则注册到路由中间件:

$app->routeMiddleware([
    'auth' => 'App\Http\Middleware\AuthMiddleware'
]);

(3).路由中声明,直接贴在下一个tip中。

4.路由场景FOR REST

假设lumen配合前端MVC比如angularJS进行开发,那么可以渲染一个首页($app->get(‘/’, …)),其他的通过api进行REST操作。

$app->get('/', function() use ($app) {
    return view('index');
});

$app->group([
    'prefix' => 'api',
    'namespace' => 'App\Http\Controllers\Api',
    'middleware' => 'auth'], function($app) {
        $app->get('users', ['uses' => 'UserController@index']);
});

5.取消Blade

注意上一个tip中,view(‘index’)函数将会渲染到view层,laravel建议大家使用blade模板引擎,那么对应的视图文件便是”index.blade.php”,考虑到blade跟angular会有语法冲突,其中的一个解决方法便是不使用blade,只需要将视图文件更名为”index.php”即可,系统将不会进行blade解析。

未完待续…