Laravel框架下的若干經常使用功能實現。php
[config/filesystems.php]html
'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'visibility' => 'public', ], 's3' => [ 'driver' => 's3', 'key' => 'your-key', 'secret' => 'your-secret', 'region' => 'your-region', 'bucket' => 'your-bucket', ], ],
新添加插入其中:數據庫
'uploads' => [ 'driver' => 'local', 'root' => storage_path('app/uploads'), ],
[1] 路由數組
Route::any('upload', 'StudentController@upload');
[2] 控制器:獲取 字段 爲 "source」 的表單。緩存
if ($request->isMethod('POST') ) { $file = $request->file('source'); if ($file->isValid() ) { // 原文件名 $originalName = $file->getClientOrignalNam(); // 擴展名 $ext = $file->getClientOriginalExtension(); // MimeType $type = $file->getClientMineType(); // 臨時絕對路徑 $realPath = $file->getRealPath(); $filename = date('Y-m-d-H-i-s) . '-' . uniqid() . '.' . $ext; $bool = Storage::disk('uploads')->put($filename, file_get_content($realPath)); var_dump(bool); } exit; }
[3] 文件上傳位置app
表單內容打印出來瞧瞧:【圖片信息】框架
[config/mail.php]ide
smtp默認佈局
'from' => ['address' => null, 'name' => null], 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'),
[.env]測試
use Mail;
class StudentController extends Controller { public function mail() { Mail::raw('郵件內容’, function($message) {
}
--------------------------------------------------------------------
Mail::send('student.mail', ['name' => 'sean', 'age' => 18], function($message) {
$message->to('.......@qq.com');
});
}
}
[student/mail.blade.php]
新建並設計一個Html模板。
put(), add(), forever(), has(), get(), pull(), forget()
配置文件:[config/cache.php]
public function cache1() { // put() Cache::put('key1', 'val1', 10); #10min } public function cache2() { // get() $val = Cache::get('key1'); }
public function cache1() { // add() $bool = Cache::add('key1', 'val1', 10); #key1存在則不能添加 } public function cache2() { // get() $val = Cache::get('key1'); }
public function cache1() { // add() $bool = Cache::forever('key3', 'val3'); } public function cache2() { // get() $val = Cache::get('key1'); }
public function cache1()
{
if (Cache::has('key1')) {
$val = Cache::get('key');
var_dump($val);
} else {
echo 'No';
}
} public function cache2() { // get() $val = Cache::get('key1'); }
public function cache2() { // pull() $val = Cache::pull('key1'); # 取走後值就沒了 }
public function cache2()
{
// forget()
$bool = Cache::forget('key1'); # 取走後值就沒了 }
Debug模式,HTTP異常,日誌。
APP_DEBUG=true
Route::any('error', 'StudentController@error');
APP_DEBUG=true後,控制器內代碼有問題,會出現相對友好不易被攻擊的提示信息。
其實就是,控制器調用abort,直接返回error.blade的視圖。
<!DOCTYPE html> <html> <head> <title>Be right back.</title> <style> html, body { height: 100%; } body { margin: 0; padding: 0; width: 100%; color: #B0BEC5; display: table; font-weight: 100; font-family: 'Lato'; } .container { text-align: center; display: table-cell; vertical-align: middle; } .content { text-align: center; display: inline-block; } .title { font-size: 72px; margin-bottom: 40px; } </style> </head> <body> <div class="container"> <div class="content"> <div class="title">Be right back.</div> </div> </div> </body> </html>
/* |-------------------------------------------------------------------------- | Logging Configuration |-------------------------------------------------------------------------- | | Here you may configure the log settings for your application. Out of | the box, Laravel uses the Monolog PHP logging library. This gives | you a variety of powerful log handlers / formatters to utilize. | | Available Settings:"single", "daily", "syslog", "errorlog" | */ 'log' => env('APP_LOG', 'single'),
public function error() { Log::info('這是一個info級別的日誌'); }
日誌文件
日誌內容
數組形式
Log::error('這是一個數組’,['name' => 'sean', 'age' => 18]);
生成帶日期標示的日誌。
配置文件:[config/queue.php]
$ php artisan queue:table
有了 <time>_create_jobs_table.php 文件
$ php artisan migrate
多了一個jobs表。
$ php artisan make:job SendEmail
文件自動有了類的框架,以下:
經過路由執行:route --> queue(),推送到隊列中。
use Mail
public function queue()
{
dispatch(new SendEmail('xxxx@qq.com'));
}
運行:$ php artisan queue:listen
public function handle() { Mail::raw('隊列測試‘, function($message) { $message->to($this->email); });
Log::info('Email sent.'); }
$ php artisan queue:failed-table
$ php artisan migrate
遷移成功,數據庫中可見到新表。
列出失敗隊列:$ php artisan queue:failed
列出失敗隊列:$ php artisan queue:forget 4
列出失敗全部隊列:$ php artisan queue:flush