1.什么事composer?
composer是一种php类库依赖关系管理器
网址:https://getcomposer.org/
2.composer下载laravel
composer create-project laravel/laravel --prefer-dist blog 5.2.*
composer命令 创建项目 laravel项目文件 说明是压缩文件 下载到哪个目录 laravel版本
在Linux中需要给storage和vender赋予权限
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层传参
return view('index')->with('name','tong');
或
$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框架下的默认模板引擎
输出
{{$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值