Laravel 常用功能
一、文件系统
-
Laravel的文件系统是基于 Frank de jonge的Flysystem扩展包
-
提供了简单的接口,可以操作本地端空间、Amazon S3、Rakspace Cloud Storage
-
可以非常简单的切换不同保存方式,但仍使用相同API操作
-
配置文件
config/filesystems.php
在当前配置文件中新增
'uploads' => [ 'driver' => 'local', 'root' => storage_path('app/uploads'), 'url' => env('APP_URL').'/storage', ],
在
StudentController.php
中创建
在web中新增路由Route::any('upload','StudentController@upload');
打印结果
public function upload(Request $request)
{
if($request->isMethod('POST')){
var_dump($_FILES);
exit();
}
return view('student.upload');
}
/home/vagrant/code/Laravel/app/Http/Controllers/StudentController.php:489:
array (size=1)
'source' =>
array (size=5)
'name' => string 'QQ20190331-000842@2x.png' (length=24)
'type' => string 'image/png' (length=9)
'tmp_name' => string '/tmp/phpZ3uTtZ' (length=14)
'error' => int 0
'size' => int 734965
方法:
$files = $request->file('source');
dd($files);
输出
UploadedFile {#363 ▼
-test: false
-originalName: "QQ20190331-000842@2x.png"
-mimeType: "image/png"
-error: 0
#hashName: null
path: "/tmp"
filename: "phpIblkUt"
basename: "phpIblkUt"
pathname: "/tmp/phpIblkUt"
extension: ""
realPath: "/tmp/phpIblkUt"
aTime: 2019-05-28 23:11:09
mTime: 2019-05-28 23:11:09
cTime: 2019-05-28 23:11:09
inode: 1446599
size: 734965
perms: 0100600
owner: 1000
group: 1000
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
}
完整上传方法
public function upload(Request $request)
{
if($request->isMethod('POST')){
// var_dump($_FILES);
// exit();
$file = $request->file('source');
// dd($files);
//文件是否上传成功
if($file->isValid()){
//原文件名
$originaName = $file->getClientOriginalName();
//扩展名
$ext = $file->getClientOriginalExtension();
//MimeType
$type = $file->getClientMimeType();
//临时绝对路径
$realPath = $file->getRealPath();
$filename = date("Y-m-d H:i:s").'-'.uniqid().'.'.$ext;
$bool = Storage::disk('uploads')->put($filename,file_get_contents($realPath));
var_dump($bool);
}
}
return view('student.upload');
}
二、邮件发送
- Laravel的邮件功能基于热门的SwiftMailer函数库之上,提供了一个简洁的API
- Laravel为SMTP、Mailgun、Mandril、Amazon SES、PHP的mail函数以及sendmail提供驱动从而允许你快速通过本地或云服务发送邮件
发送邮件
配置 config/mail.php
发送
- Mail::raw()
- Mail::send()
public function mail()
{
Mail::raw('邮件内容 测试',function ($message){
$message->from('zx554805642@163.com','Laravel学习');
$message->subject('邮件主题 测试');
$message->to('554808642@qq.com');
});
}
MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=465
MAIL_USERNAME=zx554805642
MAIL_PASSWORD=15902768404
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=zx554805642@163.com
MAIL_FROM_NAME='Laravel学习发送邮件'
HTML格式邮件
Mail::send('student.mail',['name'=>'care'],function ($message){
$message->to('554808642@qq.com');
});
三、缓存使用
- Laravel为各种不同的缓存系统提供一致的api
- Laravel支持各种常见的后端缓存系统,如file、memcached和redis
主要方法
- put()
- add()
- forever()
- has()
- get()
- pull()
- forget()
使用
配置:config/cache.php
//新增方法
public function cache1()
{
//put()
Cache::put('key1','val',10);
//add() key存在返回false,key不存在返回true 并缓存
$bool = Cache::add('key2','val',10);
var_dump($bool);
//forever() 永久缓存
Cache::forever('key3','val');
//has()
$bool = Cache::has('key2');
var_dump($bool);
}
//删除方法
public function cache2()
{
//get
$val = Cache::get('key2');
var_dump($val);
//pull 取出一次之后再删除
$val = Cache::pull('key1');
var_dump($val);
//forget() 返回bool
$bool = Cache::forget('key1');
var_dump($bool);
}
四、错误日志
- Debug模式
- HTTP模式
- 日志
Debug模式
配置:config/app.php
进行本地开发时,应该配置APP_DEBUG环境变量为true,在上线环境,这个值应该永远为false
五、HTTP异常
- 有些异常描述来自服务器的HTTP错误码
- 例如,这可能是一个"页面未找到"错误(404),"认证失败错误"(401) 亦或是程序出错造成的500错误
public function error()
{
$name = 'care';
// var_dump($name);
// return view('student.error');
$student = null;
if($student == null){
abort('503');
}
}
六、日志
- Laravel日志工具基于强大的monolog库,提供了single、daily、syslog和errorlog日志模式
- debug、info、notic、warning、error、critical和alert七个错误级别
Log::error('这是一个error级别的日志');
Log::info('这是一个info级别的日志');
Log::warning('这是一个数组',['name'=>'zhangsan','age'=>11]);
七、队列
- Laravel队列服务为各种不同的后台队列提供了统一的API
- 允许推迟耗时任务(例如发送邮件)的执行,从而大幅提高web请求速度
处理步骤
- 迁移队列需要的数据表
- 编写任务类
- 推送任务到队列
- 运行队列监听器
- 处理失败任务
配置:config/queue
//生成表
php artisan queue:table
(生成2019_05_29_195612_create_jobs_table.php文件)
vagrant@homestead:~/code/Laravel$ php artisan migrate
Migrating: 2019_05_29_195612_create_jobs_table
Migrated: 2019_05_29_195612_create_jobs_table
//生成任务记录表
vagrant@homestead:~/code/Laravel$ php artisan make:job SendEmail
Job created successfully.
//生成任务失败记录表
vagrant@homestead:~/code/Laravel$ php artisan queue:failed-table
Migration created successfully!
//执行迁移文件
vagrant@homestead:~/code/Laravel$ php artisan migrate
Migrating: 2019_05_29_200557_create_failed_jobs_table
Migrated: 2019_05_29_200557_create_failed_jobs_table
//查看失败队列
php artisan queue:failed
//重复执行某一个队列 id
php artisan queue:retry 1
//重复执行所有队列
php artisan queue:retry all
//删除队列中某个任务
php artisan queue:forget 1
//删除队列中所有任务
php artisan queue:flush
本作品采用《CC 协议》,转载必须注明作者和本文链接