laravel

1.什么事composer?
composer是一种php类库依赖关系管理器
网址:https://getcomposer.org/
2.composer下载laravelphp

composer create-project laravel/laravel --prefer-dist blog 5.2.*

composer命令 建立项目 laravel项目文件 说明是压缩文件 下载到哪一个目录 laravel版本 laravel

在Linux中须要给storage和vender赋予权限redis

3.路由,请求的一级分发者数据库

Route::get('/', 'IndexController@index');  //get请求
Route::post('/', 'IndexController@index'); // post请求
Route::resource('home', 'HomeController@index'); // 资源型请求

resource会多几条的路由
4.控制器,请求的二级分发者
快速建立控制器数组

php artisan make:controller HomeController

5.查看路由列表服务器

php artisan route:list

6.控制器给视图view层传参cookie

return view('index')->with('name','tong');

session

$data = [
    'name'=>'tong',
    'age'=>18
];
return view('index',$data);

并发

$name = 'tong';
return view('index',compact('name'));    //等同于['name'=>'tong']

7.blade模板引擎
7.1什么是blade模板引擎?blade是Laravel框架下的默认模板引擎
输出app

{{$name}} => <?php echo $name ?>
{{$name or '无名大侠'}} => <?php !empty($name) ? $name : '无名大侠'?>
@{{$name}}  //不解析

7.2控制流和循环
if

@if($anme)
    你好{{$anme}}.
@else
    你叫什么?
@endif

foreach

<ul>
    @foreach($name as $value)
        <li>{{$value}}</li>
    @endforeach
</ul>

7.3子视图

//<title>子视图 - Laravel教程<title>
将公共样式放在common目录中,而后引用@include('common.head')
  1. 环境与部署
    8.1 数据库

    首先看看项目根目录有没有.env文件,没有的话复制.env.example,名字叫作.env,里面存放一些全局的环境变量参数
    DB::connection()->getDatabaseName(); //查看有没有连接成功

    8.2 session

8.3 环境文件

注意:上传项目的时候必定要注意删除.env文件

8.4 部署和开发模式切换
8.5 down/up

好比咱们的网站忽然发生了一些大规模的攻击或一些其余的问题,形成咱们的一些数据的丢失,数据完整性的问题,数据一致性的问题,总之就是一些比较严重的问题,以致于咱们不得不停下来,首先给用户一个503页面,让用户知道咱们的网站遭遇了一些问题正在抢修,何时恢复,或恢复时间不肯定,给用户一个这样的页面,遇到这种状况,咱们能够直接 php artisan down 给用户提示,等网站恢复后 php artisan up 让项目正常运行

9.eloquent--一种和数据库交互的机制,好用,优雅
快速建立model:php artisan make:model User

protected $table = 'user';//表名
protected $guarded = ['user_id'];//不被赋值的属性
protected $hidden;//隐藏数据,禁止查询
protected $primaryKey = 'id';//主键
protected $fillable = ['name'];//那些属性能够被赋值
public $timestamps = false;关闭时间戳字段得添加
$model->findorFail();查询不到数据就报错
//查询数据
$this->all();

//添加数据
$data = ['useraname'=>'sssss','pwd'=>'sdasdsa'];
$model->fill($data_array());以数组的形式添加数据,异常强大不在$this->username = $data['username'];
$model->save();

//修改数据
$user= $model->find($id);
$user->username = 'adsadasd';
$user->save();

//批量修改
$user = $this->where('age','<',18);
$user->update(['username'=>'adasda','age'=>60]);

///删除数据
$user = $this->find($id);
$user->delete();

//经过主键删除模型
App\Flight::destroy(1);
App\Flight::destroy([1, 2, 3]);
App\Flight::destroy(1, 2, 3);

//经过查询删除模型
$deletedRows = App\Flight::where('active', 0)->delete();

//添加额外约束
$flights = App\Flight::where('active', 1)
           ->orderBy('name', 'desc')
           ->take(10)
           ->get();

9.集合

$user = new App\User();
$users = $user->all();
dd($users);  //等同于var_dump($users);die;
$users->toArray();   //将集合变为数组

$arr = ['sss','ddd'];
$collection = collect($arr);    //将数组变为集合,能够方便的使用结合中的方法
$data = $collection->all();   //则又能够得到数据的原型

$bool = $collection->contains('sss');//查看集合中有没有sss这个值,有的话返回true,没有返回false
$collection->has('sss');//查看集合中有没有叫sss的键
$collection->take(2);//取出集合中的前两个值,若是为负值,则从后往前取

10.操做用户产生的数据
10.1请求(requset)
10.1.1基础:获取用户提交的数据

input::get('name'); //能够获取url路径中的值
Request::all(); //返回用户提交的全部数据

10.1.2请求实例

Request::get('name');//接受用户输入的数据;可选的第二个参数,给它一个默认值
Request::query('name');//与get类似,但具备更强的选择性,固定接受地址栏中的数据,没有参数返回全部数据
Request::has('name');//查看用户提交的数据中是否有name键,而且不为空的时候,返回true;不然false
Request::exists('name');//查看用户提交的数据中是否存在name键
 
Request::only('name','age');//限制用户的输入,只接受name和age这两个参数
Requset::except('name','age');//与only()正好相反,除了name和age,其余的参数都接受
Requset::url();//返回网址(不带参数)
Requsett::fullUrl();//返回所有网址(带参数)

10.1.4请求历史

当用户提交信息错误的时候,把用户填写的数据再返回去,提升用户体验度
Request::falsh();//用户数据处理失败后,保存以前提交的数据
Request::falshOnly();//同falsh()同样,只存某些数据
Request::falshExcept();//同falsh()同样,除了这几个数据,其余的数据都存储
Request::old();//提交失败返回后,在拿出以前用户的数据

10.1.5文件

Request::file('myFile');//获取用户在请求中所包含的全部文件
Request::hasFile('myFile');//是否有上传文件,返回bool值
Request::file('myFile')->getSize();获取文件大小
Request::file('myFile')->getClientOriginalName();//获取客户端上传文件的名称
Request::file('myFile')->getClientOriginalExtension();获取客户端上传文件的后缀
<input type="file" name="myFile" multiple>  //可让文件多选

11.会话:session

会话用于储存用户和服务器之间的一个状态
Session:::all();//获取全部的session
Session::put($key,$value);/添加一个session
Session::get('username');//获取某个session
Session::has('username');//有没有名叫username的session
Session::forget('username');//销毁某个session
Session::pull();用一次以后就被销毁,能够在用户修改数据的时候,和falsh配合使用

12.会话配置

在laravel中,session默认使用文件存储的,可对于一个真正跑在线上的项目来讲,它对性能的要求是比较高的,尤为是大并发量的项目,因此说,一半咱们能存在数据库,就存在数据库,由于文件的读取速度不比较慢,下面是具体过程
1.在.env中,修改 SESSION_DRIVER=database
2.生成从存储session的数据表:php artisan session:table
3.composer dump-autoload    从新生成框架的自动加载文件
4.php artisan migrate    执行数据迁移

除了database,session还能够存储在cookie,memcache,redis中

13.数据验证

public function create(){
  //接收数据
  $data = Request::all();
  //验证数据
  $validator = Validator::make($data,[
    'username'=>'required|min:4|max:10|unique:user',//username必填,最少4位,最多10位(between:4,10),user表中要惟一
    'pwd'=>'numeric|required'//pwd必须为数字,必填,,多个验证用‘|’隔断
  ]);

  //对验证失败作出相应
  if($validator->fails()){
    return $validator->errors();
  }
  //验证成功
  return '验证成功!';
}

14.哈希hash

//hash
Route::get('hashmake',function(){
  $password = Request::get('password');
  $hashPassword = Hash::make($password);
  Session::put('hashpassword',$hashPassword);
  return Session::get('hashpassword');
});
Route::get('hashcheck',function(){
  $inputpassword = Request::get('password');
  $hashpassword = Session::get('hashpassword');
  if(Hash::check($inputpassword,$hashpassword)){//第一个参数是输入的密码,第二个参数是哈希密码
    echo "密码输入正确";
  }else{
    echo "密码输入错误";
  }
});

15.帮助函数
15.1帮助函数--array

//head()返回数组中的第一个参数
$arr = ['one','two','three'];
head($arr);//one

//array_only()
$arr = ['one'=>'hou','two'=>'li','three'=>'zhao'];
return array_only($arr,['one','two']);//只要数组中的one和two键的值
//['one'=>'hou','two'=>'li']

//array_first()返回知足条件的第一个值
$arr1 = [1,2,3];
return array_first($arr1,function($key,$value){
  return $value>=2;
});
//2

//array_add($arr,$key,$value)向数组中添加值
$arr = ['one'=>'hou','two'=>'li','three'=>'zhao'];
return array_add($arr,'four','zhang');
//['one'=>'hou','two'=>'li','three'=>'zhao','four'=>'zhang']

//array_except($arr,$arr_except)除了什么,返回数组中其余的值
$arr = ['one'=>'hou','two'=>'li','three'=>'zhao'];
return array_except($arr,['two']);
//{"one":"hou","three":"zhao"}

//array_flatten将多为数组转化成觉得数组
$arr = ['one'=>'hou','two'=>'li','three'=>['zhao','zhang']];
return array_flatten($arr);
//["hou","li","zhao","zhang"]

//array_where();返回知足条件的参数
$arr = ['one'=>'hou','two'=>'li','three'=>['zhao','zhang']];
return array_where($arr,function ($k,$v){
  return is_array($v);
});
//{"three":["zhao","zhang"]}

//array_last()返回数组中的最后一个值
$arr = ['one'=>'hou','two'=>'li','three'=>'zhao'];
return array_last($arr);
//zhao

15.2帮助函数--path

app_path();//返回项目的路径
config_path();//返回配置路径
public_path();//返回public的路径
storage_path();//返回storage的路径(过程文件的储存目录)

15.3帮助函数--string

str_plural($str);//某个英文单词的复数,很是智能,不是你所看到的那么简单
starts_with('asd','a');//该字符传是否以a开头,返回bool值
end_with('asd','d');//该字符传是否以d结尾,返回bool值
camel_case($str);//将字符串转化成驼峰式
class_basename('App\Http\Controllers\TestController');//只返回TestController
str_limit('abcd',3);//abc...   限制字符串的长度,超出后在字符串后加上‘...’
str_is('ab*','abcd');//至关于正则,判断支付穿是否知足于某种模式,第一个参数是条件,第二个参数是匹配的字符串,返回bool值