学习笔记

Study notes

Laravel基础知识整理一

云逐梦16362019-05-23 15:18:00返回列表

Laravel基础知识整理供大家参考学习

image.png

# 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();

  

  //调取已经存在会话中的所有数据

  

  });


返回
顶部