Laravel & Lumen 中整体配置的说明
1. Lumen使用自定义的配置文件
在laravel当中,默认是存在config文件夹,按照规则,相应的库需要配置文件,都是在config中以独立的一个php config文件存在的。 而在Lumen当中,是没有config文件夹,配置文件统一放到.env文件中。
-
以下是Laravel中使用的结构文件:
-
以下是Lumen中使用的文件结构
如果在Lumen当中需要启用config文件夹,并且按库去设定相应的配置文件。那么就需要以下两个步骤:
- 在项目根目录中,建立config文件夹
- 创建相应的.php配置文件,这些配置文件返回的是一个key=>value组成的数组结构
- 在bootstrap/app.php中指定使用相应的配置文件,但是有一个config/database.php配置文件不需要configure指定,就可以默认加载。
$app->configure('api');
$app->configure('jwt');
$app->configure('auth');
2. 入口文件、启动文件和配置文件
应用程序的入口文件是: /index.php ==> /public/index.php ==> /bootstrap/app.php
应用程序最基本的启动是:
- public/index.php
$app = require(bootstrap/app.php)
- bootstrap/app.php
```
Dotenv\Dotenv(DIR.'/../'))->load(); // load env
$app = new Laravel/Lumen/Application();
// 如果是Laravel,则是 new Illuminate/Foundation/Application
// Register Singleton Container Bindings $app->singleton(...);
// Register Middleware $app->middleware(...); $app->routeMiddleware(...);
// Register Service Provider $app->register(...);
// 加载路由 require app/Http/routes.php
- router定义
$app->get('/', function () use ($app) { return $app->version(); });
- 程序运行(public/index.php)
`$app->run();`
Lumen的配置文件是根目录下的.env文件,.env文件的载入是bootstrap/app.php中的一行代码:
`new Dotenv\Dotenv(__DIR__.'/../'))->load()`
---
### 3. Facades
>Facades 提供一个静态接口给在应用程序的服务容器中可以取用的类
在配置文件中,有一个`$app->withFacades();`是表示启用Facades.
启用和不启用的区域在于:
- 启用前:
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB;
Cache::put('key', 'value', $minutes); DB::getQueryLog();
- 启用后
use Cache; use DB; Cache::put('key', 'value', $minutes); DB::getQueryLog();
通过查看withFacades,可以看出玄机:
public function withFacades() { Facade::setFacadeApplication($this);
if (! static::$aliasesRegistered) {
static::$aliasesRegistered = true;
class_alias('Illuminate\Support\Facades\App', 'App');
class_alias('Illuminate\Support\Facades\Auth', 'Auth');
class_alias('Illuminate\Support\Facades\Bus', 'Bus');
class_alias('Illuminate\Support\Facades\DB', 'DB');
class_alias('Illuminate\Support\Facades\Cache', 'Cache');
class_alias('Illuminate\Support\Facades\Cookie', 'Cookie');
class_alias('Illuminate\Support\Facades\Crypt', 'Crypt');
class_alias('Illuminate\Support\Facades\Event', 'Event');
class_alias('Illuminate\Support\Facades\Hash', 'Hash');
class_alias('Illuminate\Support\Facades\Log', 'Log');
class_alias('Illuminate\Support\Facades\Mail', 'Mail');
class_alias('Illuminate\Support\Facades\Queue', 'Queue');
class_alias('Illuminate\Support\Facades\Request', 'Request');
class_alias('Illuminate\Support\Facades\Schema', 'Schema');
class_alias('Illuminate\Support\Facades\Session', 'Session');
class_alias('Illuminate\Support\Facades\Storage', 'Storage');
class_alias('Illuminate\Support\Facades\Validator', 'Validator');
}
}
---
### 4. Session
Session 默认未开启。
开启方式:去掉 bootstrap/app.php 中 $app->middleware(); 的 StartSession中间件的注释。
在 .env 文件中,Session 的默认驱动是:memcached。
目前支持的驱动有:file、cookie、database、memcached、redis、array
[Session参考](http://lumen.laravel-china.org/docs/session#session-drivers)
### 5. Laravel的一些package
[参考](https://segmentfault.com/a/1190000002889864)