Laravel基础知识整理一
20572019-05-23 15:18:00返回列表
Laravel基础知识整理供大家参考学习
# Laravel基础总结
## 安装Laravel
### Composer的使用
- 什么是composer? composer是一种PHP类库依赖关系管理器
- Composer的安装和部署
- 使用Composer安装Laravel
composer create-project --prefer-dist laravel/laravel blog
### Linux下特殊目录权限更改
### 代理使用
## 路由
php artisan route:list
### 路由能干什么?
- 路由的作用是宏观分发请求(请求的一级分发者)
### 路由基础用法
- 欢迎页如何输出的?
- 路由能干什么?
- 路由的作用是宏观的分发和限制请求
- 常用的路由种类
- get
Route::get('/','WelcomeController@index');
Route::get('test',function(){
return 'get请求';
});
- post
Route::post('test',function(){
return 'post请求';
});
- any
Route::any('test',function(){
return 'any请求';
});
### CSRF保护
- 什么是CSRF保护?
- 跨站攻击csrf保护机制
### 路由传参
- 为什么要传参?
- 标准传参
- 可选传参
## 控制器(Controller)
### 什么是控制器?
- 请求的二级分发者
### 创建控制器
- 手动
- 自动
- php artisan make:controller ControllerName
### RESTful 资源控制器
Route::resource('user','userController');
## 视图(Views)
### 什么是视图?
- 处理结果的可视化(网页代码的生成)
### 创建视图
### 传递数据
- with方法
view('my_welcome')->with('name','韩梅梅');
- 传参
$data=[
'name'=> '李明',
'age' => 50
];
view('my_welcome',$data);
2.
$name='lala'
view('my_welcome',compact('name'));
## Blade模板引擎
### 什么是Blade?
- Blade是Laravel框架下的默认模板引擎
### 输出
- 输出变量
- 输出函数结果
- 转义输出
- 非转义输出
### 控制流和循环
- if else elseif
@if($name)
你好{{$name}}
@else
不知道你叫什么
@endif
- foreach
<ul>
@foreach($people as $person)
<li>{{$person}}</li>
@endforeach
</ul>
- for
@for($i=0;$i<100;$i++)
@endfor
- while
@while(true)
@endwhile
### 子视图
- include
@include('component.head')
- yield
- ...
## 环境与部署
### 数据库
获取数据库名称
DB::connection()->getDatabaseName();
### Session
### 环境文件
### 部署/开发模式切换
### down/up
服务器维护暂时不能访问
php artisan down
恢复服务器
php artisan up
## Eloquent
### 基础用法
- fillable 字段可以被填写
protected $fillable = ['username','age'];
- guarded 字段不可以被填写
protected $guarded=['user_id'];
- table 里面值默认预测是类的复数即数据表名
protected $table='users';
- hidden 隐藏字段不显示
protected $hidden=['password','remember_token']
- timestamps创建时间和更新时间控制
public $timestamps = false; //关闭
public $timestamps = true;//打开
- 主键不是Id
protected $primary_key = 'user_id';
- 实例化
$user = new App\User;
return $user->all();
//return $user-> find(3);
//return $user->findorFail(3);
//return $this->where('username','haha')->get();
//return $this->('user_id','<',3)->get();
### 增删改查
- 增
public function userAdd(){
$this->username='user1';
$this->age = 40;
$this->save();
}
public function userAdd2(){
$user_data = ['username'=> 'user2','age' => 30];
$this->fill($user_data);
$this->save();
}
- 删
public function userDelete()
{
$user = $this->find(4);
$user->delete();
}
- 改
public function userUpdate()
{
$user = $this->find(2);
$user->username='xiaobai';
$user->age = 80;
$user->save();
}
public function userUpdate2()
{
$users = $this->where('user_id','<','3');
$users->update(['username' => 'dabai','age' => 30]);
}
- 查
public function userRead()
{
return $this->get();
}
### 函数
- contains
$arr=['one','two','three'];
$collection = collect($arr);
$r = $collection->contains('one');
return $r ? '有' : '没有';
- has 是否有一个键
$arr=['one'=>1,'two'=>2];
$collection = collect($arr);
$r = $collection->has('one');
return $r ? '有' : '没有';
- take 取几个数据
$arr=['one','two','three'];
$collection = collect($arr);
$r = $collection->take(2);
return $r; // one two
//$r = $collection->take(-2);
//return $r; //two three
## 帮助函数
### 一、array
- head 返回数组中的第一个值
$arr = [1,2,3];
return head($arr); //1
- array_only
$arr = [
'name' => 'ba',
'age' => 20,
'job' => 'work',
];
return array_only($arr,['name','age']);
//{"name":"ba","age":20}
- array_first
$arr=[10,20,30];
return array_first($arr,function($key,$value){
return $value>20;
});
// 30
- array_add
$arr = [
'name' => 'ab',
'age' => 20,
];
return array_add($arr,'job','work');
//{"name":"ab","age":20,"job":"work"}
- array_except
$arr= [
"name" => 'abc',
'age' => 20,
"job" => "work",
];
return array_except($arr,"job");
//{"name":"abc","age":20}
- array_flatten
$arr = [
'a' => 1,
'b' => [
'a' => 2,
'b' => 3,
],
];
return array_flatten($arr);
//[1,2,3]
- array_where
$arr=[
'name' => 'ba',
'age' => 20,
'job' => 'work'
];
return array_where($arr,function($k,$v){
return is_string($v);
});
// {"name": "ba","job":"work"}
- last
$arr=[
'name' => 'bo',
'age' => 20,
'job' => 'work'
];
return last($arr);
// work
### 二、path
- app_path 返回应用的路径
- config_path返回config路径
- public_path返回pubic路径
- storage_path返回存储过程路径
### 三、string
- str_plural将单数变为复数
str_plural('apple'); //apples
str_plural("sheep"); //sheep
- starts_with一段字符串是不是以某个字符开始的
dd(starts_width("abc",'a')); //true
- ends_with一段字符串是不是以某个字符结束的
dd(ends_with("abc","c")); //true
- camel_case转化为驼峰式命名
camel_case('hello_word'); //helloWord
- class_basename取出类名不带命名空间
dd(class_basename("App\Controller\MyController")); //MyController
- str_limit限制字符长度
str_limit('abcd',3); // abc...
- str_is后面字符是不是匹配前面的模式
str_is("ab*","abcd"); // true
## 会话Session
存储用户和服务器之间的状态
Route::any('test',function(){
dd( Session::all());
});
### put
Route::any('test',function(){
Session::put('username','lala');
dd(Session::all());
});
### all
Route::any('test',function(){
dd(Session::all());
});
### get
Route::any('test',function(){
Session::get('username');
dd(Session::all());
});
### has
Route::any('test',function(){
Session::has('username');
//返回布尔值,Session是否存在username
dd(Session::all());
});
### forget
Route::any('test',function(){
Session::forget('username');
//删除某个session
dd(Session::all());
});
### pull
Route::any('test',function(){
return Session::pull('username');
//拿出来,只能用一次,然后就删除了
});
### 配置
可以将文件存储改为数据库存储
SESSION_DRIVER=file
SESSION_DRIVER=database
php artisan session::table
- 文件
- 数据库
## 数据验证
public function create()
{
$rq = Request::all();
$validator = Validator::make($rq,[
'username' => 'required|between:4,32|unique:users',
'phone' => 'numeric|required'
]);
if($validator->fails()){
return $validator->errors();
}
echo '验证成功';
return $rq;
}
## 哈希(Hash)
### make
Route::any('test',function(){
$password = Request::get('password');
$hashedPassword = Hash::make($password);
session(['hashedPassword'=>$hashedPassword]);
return session('hasedPassword');
});
### check
Route::any('test2',function(){
$password = session('hashedPassword');
$password2 = Request::get('password2');
if(Hash::check($password2,$password)){
return '密码输入正确';
}else{
return '密码输入错误';
}
});
## 文件
表单提交时要加 enctype="multipart/form-data"
如果加了multiple则可以上传多个文件
<input type='file' name='profile' multiple />
### file
Route::any('test',function(){
dd( Request::file());
//返回所有上传的文件
});
### hasfile
Route::any('test',function(){
return Request::hasfile('profile');
//是否有上传的文件profile,返回true,false
});
### getSize
Route::any('test',function(){
dd( Request::file('profile')->getSize());
//返回上传文件的大小
});
### getClientOriginalName
Route::any('test',function(){
dd( Request::file('profile')->getClientOriginalName());
//返回在客户端时的文件名称
});
### getClientOriginalExtension
Route::any('test',function(){
dd( Request::file('profile')->getClientOriginalExtension());
//返回在客户端时的文件扩展名 jpg
});
## 请求(Request)
### 基础:获取用户提交的数据
- get
Route::get('test',function(){
return Input::get('name');
//获取name的值
return Resquest::all();
//返回所有输入数据
});
- post
Route::post('test',function(){
return Request::all();
});
### 请求实例
- query
Route::any('test',function(){
return Request::query(); //和get一样
});
- get默认值
Route::any('test',function(){
return Request::get('name','hanmeimei');
//如果name没有值则返回默认值hanmeimei
});
- has
Route::any('test',function(){
return Request::has('name');
//返回布尔值如果用户发送数据中有name且值不为空则返回ture,否则返回false
});
- exists
Route::any('test',function(){
return Request::exists('name');
//返回布尔值只检查键值name是否存在,如果存在则返回true,否则返回false,不会检查值的真假
});
### 请求检索
- only
Route::any('test',function(){
dd( Request::only('name','age'));
//数据只返回name,age的值
});
- except
Route::any('test',function(){
dd( Request::except('name','age'));
//返回除了name,age的值
});
- url
Route::any('test',function(){
dd( Request::url());
//返回url值,不包含参数 http://www.test.com/test
});
- fullurl
Route::any('test',function(){
dd( Request::fullurl());
//返回整个url 。http://www.test.com/test?name=abc
});
### 请求历史
- flash将内容存在会话中
Route::any('test',function(){
return Request::flash();
//数据存在了会话中
});
- flashOnly
Route::any('test',function(){
return Request::flashOnly('name');
//只将name值存在会话中
});
- flashExcept
Route::any('test',function(){
return Request::flashExcept('name');
//将除了name以外的值 都存在在会话中
});
- old
Route::any('test',function(){
return Request::old();
//调取已经存在会话中的所有数据
});