laravel
一.简介
二.运行环境要求
1.php 版本>=5.5.9
2.Mcrypt PHP扩展 php的加密扩展,提供多种加密算法
3.openssl扩展 对传输的数据进行加密
4.mbstring扩展 提供了针对多字节字符串的函数,能够帮助处理php多字节编码
5.Tokenizer PHP扩展 php代码片段解析
三.安装
1.composer安装
composer create-project laravel/laravel your-project-name --prefer-dist "5.1.*"
2.直接复制一份安装好的即可

四.本地域名解析与apapche虚拟主机配置(window下)
1.打开:C:\Windows\System32\drivers\etc目录中的hosts文件:
配置信息:127.0.0.1 自定义主机名

2.在apache的conf\extra的httpd-vhosts.conf配置文件中配置
<VirtualHost *:80>
ServerAdmin chenxiaoyu@lampbrother.net
DocumentRoot "虚拟主机目录位置"
ServerName 虚拟主机名
ErrorLog "logs/虚拟主机名-error.log"
CustomLog "logs/虚拟主机名-access.log" common
</VirtualHost>

注:配置虚拟主机出现的问题
①.配置好之后 localhost不能访问
②.配置完成只能访问根目录
③.hosts文件打不开
五.配置
1.开发前必须要做的
①.配置虚拟主机
②.storage 和 vendor 目录要让服务器有写入权限 linux
③.程序密钥
(a).这里是默认生成的,如果没有的话可以使用命令
php artisan key:generate
(b).如果没有key会报错
No supported encrypter found. The cipher and / or key length are invalid.
④.修改时区
config/app.php 'timezone'=>'PRC'
优先建立出来 404 页面
404.blade.php

SEO 搜索引擎优化

2.开发过程中要用到的
①.读取和设置配置
(a).Config::get('app.timezone');
(b).Config::set('app.timezone','PRC');
②.获取环境变量
(a).env('DB_HOST','');
③.关闭和启动应用
(a).关闭 php artisan down 模版配置 resources/views/errors/503.blade.php
(b).开启 php artisan up
④.URL重写
public/.htaccess
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
六.路由:将信息从源地址传递到目的地的角色 abort
1.文件位置:app/Http/routes.php
2.基本路由
①.Route::get('/admin', function () {
return view('useradd');
});
// controller@方法
②.Route::post('/admin', function () {
return view('useradd');
});
使用post方式请求服务器的时候,可以先将http/kernel.php 中的第20行屏蔽
③.Route::put(); //修改
④.Route::delete(); //删除
3.带参数的路由
①.普通使用
Route::get('/goodsinfo/{id}', function ($id) {
echo "商品的id是".$id;
});
?a=123&b=456

②.限制参数类型
Route::get('/user/{id}',function($id){
echo $id;
})->where('id','\d+');
4.传递多个参数
①.Route::get('/user/{name}/{id}',function($name,$id){
echo $name;
echo "<br>";
echo $id;
})->where('id','\d+')->where('name','\d+');
5.路由别名 少
①.Route::get('/admin/user/delete',[
'as'=>'udelete',
'uses'=>function(){
//快速获得改地址
$url=route('udelete');
echo 'ok';
}
]);
6.路由组设置 middleware
①.Route::group([],function(){

});
7.404页面设置
resources/views/errors/404.blade.php
8.CSRF保护
POST 提交 自动执行 csrf

TokenMismatchException in VerifyCsrfToken.php line 53:
开启了csrf的保护
csrf

七.中间件
1.创建(默认不直接生效)
php artisan make:middleware LoginMiddleware
2.事例代码
$ip=$request->ip();
$path=$request->path();
file_put_contents('./ips.txt',$ip.'------'.$path."\r\n",FILE_APPEND);

路径的问题
相对路径 ../ ./ 绝对路径 /

php语言 绝对路径 / 代表 盘符根目录
./ ../ 相对路径 入口文件 所在的目录 public
html的绝对路径 / 当前的域名 所指定的目录 public

在laravel中 php端一律使用相对路径 html端 一律使用绝对路径
echo "<img src='/1.jpg'>";
include ""; 相对路径

3.注册app/Http/Kernel.php
①.全局注册:$middleware 命名空间\类名::class
\App\Http\Middleware\LoginMiddleware::class
①.局部注册:$routeMiddleware 别名=>命名空间\类名::class
'login'=> \App\Http\Middleware\LoginMiddleware::class
4.使用

Route::get('/admin', [
'middleware'=>'admin',
'uses'=>function(){
echo '后台';
},
]);

八.控制器
1.创建控制器
php artisan make:controller UserController --plain
2.路由以及访问
①.普通用法
Route::get('/stu/add','StuController@add');
②.带参数访问
(a).路由带参数
Route::get('/stu/del/{id}',[
'uses'=>'StuController@del',
]);
控制器函数 需要截取形参$id
public function del($id){}

(b).原生参数 ?id=123
public function add(request $request){
$id=$request->input('id');
echo $id;
}

③.别名
Route::get('/stu/del/{id}',[
'as'=>'udel',
'uses'=>'StuController@del',
]);
④.中间件控制
(a).第一种方法
Route::get('/admin', [
'middleware'=>'login',
'uses'=>'StuController@update'
]);
(b).第二种方法
Route::get('/stu/update','StuController@update')->Middleware('login');

⑤.隐式控制器
(a).路由
Route::controller('users','UserController');
//所有请求为users的 都由UserController来完成
注:运行artisan命令的时候 要保证当前脚本不能有报错

post/getStu

(b).使用
控制器中方法起名规则
public function 请求方式+路径(){}
例如:
所访问的路径是 users/add
public function getAdd(){}
⑥.restful 资源控制器
Route::resource('type','TypeController');
九.请求
1.基本信息获取 了解
①.请求方法 $request->method();
②.检测方法 $request->isMethod('post');
③.请求路径 $request->path();
④.请求完整url $request->url();
⑤.获取ip $request->ip();
⑥.获取端口 $request->getPort();

⑦.获取头信息 $arr=$request->header('Connection');

******************************
2.提取请求参数 POST GET
①.提取参数 $request->input('name');
②.设置默认值 $request->input('name','xy');
③.检测是否存在 $request->has('name');
④.提取所有参数 $arr=$request->all();
⑤.提取部分 $arr=$request->only(['username','password']);
⑥.提取部分 $arr=$request->except(['username','password']);

3.文件操作
①.检测是否有文件上传 $request->hasFile('表单name值');
②.将文件移动到指定位置 $request->file('表单name值')->move('路径','新名字');

路径的问题
前台 html代码
绝对路径 / 域名 直接 绑定的 那个文件夹 public里面的东西
不能写相对路径
php
绝对路径 / 当前项目所在的盘符的根目录
相对路径 ./ 当前入口文件所在的路径

总结 laravel里面 html代码 绝对路径 php代码 相对路径
echo "<img src='1.jpg'>"; html 绝对路径
include file_get_content fopen ....... php 函数

4.cookie操作
①.设置 \Cookie::queue('cookie名','cookie值',过期时间);

return response('')->withCookie('cookie名','cookie值',过期时间);

②.读取 \Cookie::get('name');

$request->cookie('name');

//路由的路径的名字 和 public里面的文件夹的名字千万不要同名 同名 默认走的public里面的文件夹 *****************

5.闪存信息:基于SESSION 用来存储请求参数的 session 关闭浏览器 flash 只要刷新一下页面 就失效 主要用来做注册
①.将所有的请求参数写入闪存中 $request->flash();
②.将部分参数写入闪存中 $request->flashOnly('参数1','参数2'..);
③.除去某些参数之外的参数 $request->flashExcept('参数1');
④.简便使用 return back()->withInput();

获取闪存的参数 old('参数')

十.响应
1.返回字符串 return "string"; 相当于 echo
2.设置cookie return response('')->withCookie('名','值',时间);

3.返回json return response()->json(["a"=>100,"b"=>2000]);

4.下载文件 return response()->download('web.config');
5.页面跳转 return redirect('/goods/add'); return back(); //返回上一页
6.显示模版 return response()->view('user'); return view('');

十一.视图
1.解析模版 view('user.add'); // \ / 都可以
2.分配数据到模版
view('user.add',[]);
3.模版引擎blade
①.模版的默认存放位置 resource/views
②.使用变量 {{$username}}
③.设置函数 {{time()}}
④.设置默认值 {{$user or 'guest'}}
⑤.显示html代码 {!! $name !!}
⑥.引入子视图 @include('header')
⑦.模版继承 @extends('index')

(a).占位符 @yield('title')

@section('content')
@show

(b).新模板内容
@section('title','new Title')

@section('content')
[ @parent ]
新内容
@endsection
4.流程控制
① 判断
@if($t==1)
处理
@elseif(count($records)>1)
处理
@else
处理
@endif
②.循环控制
@for($i=0; $i<10; $i++)
处理
@endfor
@foreach($users as $k=>$v)
处理
@endforeach

十二.数据库操作

1.支持的数据库类型
mysql Postgres SQLite SQLServer
2.数据库连接配置
①.文件位置 config/database.php
②..env环境快速配置
3.数据库基本操作
***********************************************
使用数据库的类的时候 一定要在上面现引入命名空间
use DB;
否则
Class 'App\Http\Controllers\DB' not found
***********************************************

①.查询 DB::select()
②.插入 DB::insert
③.更新 DB::update
④.删除 DB::delete

//上面的都不要记住

⑤.一般语句 DB::statement('drop table users');
* ⑥.事务操作 DB::beginTransaction()
DB::rollBack()
DB::commit()

* ⑦.操作多个数据库 DB::connection('数据库别名')->select();

4.构造器
①.增删改查
(a).插入
单条: DB::table('stu')->insert(['name'=>'xy','age'=>46]);
多条: DB::table('stu')->insert([['name'=>'xy','age'=>46],['name'=>'xy','age'=>46]]);
获取id插入: $id=DB::table('stu')->insertGetId(['name'=>'xy','age'=>46]);
(b).更新
DB::table('stu')->where('id',1)->update(['name'=>'xy'])
(c).删除
DB::table('stu')->where('id','<','100')->delete();
(d).查询
查询所有: DB::table('stu')->get()
查询单条: DB::table('stu')->first();
查询单条结果中的某个字段 DB::table('stu')->value('name')
获取一列数据 DB::table('stu')->lists('name')
②.连贯操作
(a).设置字段名 DB::table('stu')->select('name','email as user_email')->get();
(b).条件
DB::table('stu')->where('name','like','%a%');->get();
DB::table('stu')->where('name','>','100')->orwhere('name','xy')->get()
DB::table('stu')->whereBetween('id',[1,5])->get()
DB::table('stu')->whereIn('id',[1,2,3])->get()
(b)排序 orderBy('name','desc');
(c)分页 DB::table('stu')->skip(10)->take(5)->get();
(d)分组 DB::table('stu')->groupBy('name')->having()->get();
(e)连接表 DB::table('stu')->join('class','stu.cid','=','class.id')->select('stu.name','class.cname')->get();
(f)计算
总数 DB::table('stu')->count();
最大值 DB::table('stu')->max('price') // min
平均值 DB::table('stu')->avg('price')

5.sql语句记录
①. app/Providers/AppServiceProvider.php
boot方法中添加
DB::listen(function($sql,$bindings,$time){
//写入sql
file_put_contents('.sqls',"[".date("Y-m-d H:i:s")."]".$sql."\r\n",FILE_APPEND);
});
②.
routes.php
Event::listen('illuminate.query',function($query){
var_dump($query);
});

十三.设置自定义函数和自定义类文件
1.建立出自定义文件 例如:app/common/function.php
2.在项目下的composer.json中添加信息
"autoload":{
"classmap":[
"database"
],
"psr-4":{
"App\\":"app\"
},
"files":[
"app/common/function.php"
]
}
3.dos界面当中composer dump-auto

十四.调试工具
1.debugbar安装
composer require barryvdh/laravel-debugbar

在config/app.php里面的providers添加
Barryvdh\Debugbar\ServiceProvider::class,

2.chrome 插件 postman FQ 安装

防止csrf攻击
打开 app/kernel.php 第20行

{{csrf_field()}} 生成了一个hidden 表单提交

{{csrf_token()}} 生成了一个 token字符串 ajax

Laravel基本使用的更多相关文章

  1. TODO:Laravel增加验证码

    TODO:Laravel增加验证码1. 先聊聊验证码是什么,有什么作用?验证码(CAPTCHA)是"Completely Automated Public Turing test to te ...

  2. TODO:Laravel 内置简单登录

    TODO:Laravel 内置简单登录 1. 激活Laravel的Auth系统Laravel 利用 PHP 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...

  3. TODO:Laravel 使用blade标签布局页面

    TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...

  4. TODO:搭建Laravel VueJS SemanticUI

    TODO:搭建Laravel VueJS SemanticUI Laravel是一套简洁.优雅的PHP开发框架(PHP Web Framework).可以让你从面条一样杂乱的代码中解脱出来:它可以帮你 ...

  5. Bringing Whoops Back to Laravel 5

    You might be missing the "prettier" Whoops error handler from Laravel 4. If so, here's how ...

  6. 在 Laravel 中使用图片处理库 Integration/Image

    系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7 ...

  7. Laravel Composer and ServiceProvider

    Composer and: 创建自定义类库时,按命名空间把文件夹结构组织好 composer.json>autoload>classmap>psr-4 composer dump-a ...

  8. Laravel 5.x 请求的生命周期(附源码)

    Laravel最早接触是刚开始实习的时候,那时通过网上的学习资料很快便上手,开发模块接口.后来没有什么深入和总结,但是当我刚开始学Laravel的时候,我对Laravel最大的认识就是,框架除了路由. ...

  9. Laravel 5.3 登录注册底层实现详解

          每个控制器都使用 trait 来引入它们需要的方法 */ 用于处理用户登录认证 用于处理新用户注册 包含重置密码逻辑 用于处理重置密码邮件链接   认证需要的视图 包含了应用的基础布局文件 ...

  10. Laravel - 安装与配置

    有多重途径可以安装Laravel,下面是通过composer安装laravel的方法.Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.c ...

随机推荐

  1. web站点启用https (二)

    接上篇内容 二.实际配置案例 实验案例:为web站点启用https 实验环境:seven公司有一个web站点,域名为www.seven.com,启用的身份验证方式是基本验证方式.随着业务发展想成为网上 ...

  2. 工程手机设置apn

    http://android.stackexchange.com/questions/117125/how-do-i-add-an-apn-via-adb xiaomi3 su mount permi ...

  3. Mac 10.12安装Go2Shell在资源管理器快速打开Shell并跳转到指定位置

    下载: (链接: https://pan.baidu.com/s/1qXAUqxY 密码: bf7g)

  4. 【Maven学习】maven-enforcer-plugin的使用

    我们会经常碰到这样的问题,在pom中引入了一个jar,里面默认依赖了其他的jar包.jar包一多的时候,我们很难确认哪些jar是我们需要的,哪些jar是冲突的.此时会出现很多莫名其妙的问题,什么类找不 ...

  5. javac的命令(-Xbootclasspath、-classpath与-sourcepath等)

    当编译源文件时,编译器常常需要识别出类型的有关信息.对于源文件中使用.扩展或实现的每个类或接口,编译器都需要其类型信息.这包括在源文件中没有明确提及.但通过继承提供信息的类和接口. 例如,当扩展 ja ...

  6. 基于Flume做FTP文件实时同步的windows服务。

    需求:做一个windows服务,实现从ftp服务器实时下载或者更新文件到本地磁盘. 功能挺简单的.直接写个ftp工具类用定时器跑就能搞定,那我为什么不用呢? 别问,问就是我无聊啊,然后研究一下Flum ...

  7. R语言多元素向量

    使用冒号运算带有数值数据(数值的增加为1) # Creating a sequence from 5 to 13. v <- 5:13 print(v) # Creating a sequenc ...

  8. 企业如何选择最佳的SSL

    如果你的企业有意采购SSL,那么本文可以给一个很好的方向.在本文中,我们将先简要介绍SSL定义及其工作原理,并探讨目前各种可用的SSL证书类型以及企业如何选择最佳的SSL. SSL定义 SSL及传输层 ...

  9. MySQL字符串函数:字符串截取

    MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...

  10. 解读MySQL的慢日志

    完整的慢日志格式一般如下: # Time: :: # User@Host: db_user[db_database] @ localhost [] # Query_time: Rows_examine ...