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')
环境与部署
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值