configs.md 4.37 KB

Laravel & Lumen 中整体配置的说明

1. Lumen使用自定义的配置文件

在laravel当中,默认是存在config文件夹,按照规则,相应的库需要配置文件,都是在config中以独立的一个php config文件存在的。 而在Lumen当中,是没有config文件夹,配置文件统一放到.env文件中。

  • 以下是Laravel中使用的结构文件:

    Alt text
  • 以下是Lumen中使用的文件结构

    Alt text

如果在Lumen当中需要启用config文件夹,并且按库去设定相应的配置文件。那么就需要以下两个步骤:

  1. 在项目根目录中,建立config文件夹
  2. 创建相应的.php配置文件,这些配置文件返回的是一个key=>value组成的数组结构
  3. 在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)