はじめに
自分の中ではLaravelの簡易版がLumenという認識なのですが、ちょっと削りすぎて Laravel風がLaravel風味のFrameworkになってる気がします。
環境
- Laravel Framework version Lumen (5.3.3) (Laravel Components 5.3.*)
Lumenのバージョンの確認
$ php artisan -V
いろいろハマるところ
"php artisan key:generate"が できない。APP_KEYを作りたい。
$ php -r "require 'vendor/autoload.php'; echo str_random(32).PHP_EOL;"
xygjeOa9lCRD88OFWzZ5tQA8gZHUtR9v
生成された文字列を.envのAPP_KEYに書き込む。
参考:Lumen Micro Framework => php artisan key:generate - Stack Overflow
メール送りたい。
(1) illuminate\mail
パッケージを入れる
$ composer require illuminate\mail
(2) bootstrap/app.php
の下記の行のコメントを外す
// Create The Application内, 26行目付近
$app->withFacades();
// Register Service Providers内, 81行目付近
$app->register(App\Providers\AppServiceProvider::class);
(3) app/Providers/AppServiceProvider.php
に、書き加える
public function register()
{
// ここから
$this->app->singleton('mailer', function ($app) {
$app->configure('services');
return $app->loadComponent('mail', 'Illuminate\Mail\MailServiceProvider', 'mailer');
});
// ここまで
}
(4) configを書く
Laravelからコピーするか、Laravelのリポジトリ(laravel/mail.php at master · laravel/laravel)からコピーする。
※ 素のLumen5.3にはconfigディレクトリがないと思うので、作成する。
<?php
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => 'hello@example.com',
'name' => 'Example',
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
];
(5) メールを送る処理を書く。
use Illuminate\Support\Facades\Mail;
$app->get('/', function () use ($app) {
Mail::send('emails.notify', [], function ($message)
{
$message->from('no-reply@example.com', 'example.com FROM-MAN')
->to('to.man@example.com')
->subject('mail subject');
});
return $app->version();
});
参考:Sending mail in Lumen via SMTP - Emerico
routes.php はどこ?
$ find . -name 'routes.php'
./app/Http/routes.php
config はどこ?
$ find . -name 'config'
./vendor/laravel/lumen-framework/config
vendor配下なので、基本的に触らない。編集する必要がある場合は、./config/
ディレクトリを作って、/vendor/laravel/lumen-framework/config
からファイルをコピーして書き換える。
sqlite を使いたい。
-
database/database.sqlite
ファイルを作る。 - .envを書き換え。
DB_CONNECTION
をsqlite
にして、あとはコメントアウト。
DB_CONNECTION=sqlite
# DB_HOST=localhost
# DB_PORT=3306
# DB_DATABASE=homestead
# DB_USERNAME=homestead
# DB_PASSWORD=secret