Laravel基础知识

laravel 5.5

一.简介

二.运行环境要求

PHP >= 7.0.0
PHP OpenSSL 扩展
PHP PDO 扩展
PHP Mbstring 扩展
PHP Tokenizer 扩展
PHP XML 扩展

三.安装

1.composer安装
composer create-project laravel/laravel your-project-name –prefer-dist “5.5.*”
2.直接复制一份安装好的即可

四.本地域名解析与apapche虚拟主机配置(window下)

1.打开:C:\Windows\System32\drivers\etc目录中的hosts文件:
配置信息:127.0.0.1 自定义主机名

2.在apache的conf\extra的httpd-vhosts.conf配置文件中配置

<VirtualHost *:80>

    # Host that will serve this project.
    ServerName      app.dev

    # The location of our projects public directory.
    DocumentRoot    /path/to/our/public

    # Useful logs for debug.
    CustomLog       /path/to/access.log common
    ErrorLog        /path/to/error.log

    # Rewrites for pretty URLs, better not to rely on .htaccess.
    <Directory /path/to/our/public>
        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^ index.php [L]
        </IfModule>
    </Directory>

</VirtualHost>

注:配置虚拟主机出现的问题
①.配置好之后 localhost不能访问
②.配置完成只能访问根目录
③.hosts文件打不开

nginx配置:

https://blog.csdn.net/zhezhebie/article/details/78143161

五.配置

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’

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 “
”;
echo $id;
})->where(‘id’,’\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
include “”; 相对路径

3.注册app/Http/Kernel.php
①.全局注册:$middleware 命名空间\类名::class

\App\Http\Middleware\LoginMiddleware::class

①.局部注册:$routeMiddleware 别名=>命名空间\类名::class

‘login’=> \App\Http\Middleware\LoginMiddleware::class

八.控制器

1.创建控制器

php artisan make:controller UserController –plain

2.路由以及访问
①.普通用法
Route::get(‘/stu/add’,’StuController@add’);
②.带参数访问

Route::group([‘prefix’ => ‘order’, ‘middleware’ => ‘auth’], function ($route) {
$route->get(‘listOrder’, ‘OrderController@listOrder’);
$route->get(‘readOrder/{order_id}’, ‘OrderController@readOrder’);
$route->get(‘deleteOrder/{order_id}’, ‘OrderController@deleteOrder’);
$route->post(‘updateOrder’, ‘OrderController@updateOrder’);
#给学生创建订单,相当于添加资源
$route->get(‘createOrder/{student_info_id}/{customer_id}’, ‘OrderController@createOrder’);
$route->post(‘saveOrder’, ‘OrderController@saveOrder’);
});

控制器函数 需要截取形参$id
public function del($id){}

(b).原生参数 ?id=123

public function add(request $request){
$id=$request->input(‘id’);
$id=request(‘id’,0);#获取参数,如果没有,则设置默认值
echo $id;
}

③.别名
Route::get(‘/stu/del/{id}’,’StuController@del’)->name(‘sdel’);
④.中间件控制
(a).第一种方法
上面已经列举;
(b).第二种方法

Route::get(‘/stu/update’,’StuController@update’)->middleware(‘login’);

⑤.隐式控制器
(a).路由

Route::controller(‘users’,’UserController’);
//所有请求为users的 都由UserController来完成

(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(‘路径’,’新名字’);

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’,compact(‘data’));
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’)
模型也可以:

$teacher_absence_time = SysConfig::where('config_key', 'teacher_absence_time_' . $lesson_type)->value('config_value');

获取一列数据 DB::table(‘stu’)->lists(‘name’)
模型里面用:pluck();

$teacher_absence_time = SysConfig::all()->pluck('config_value');

②.连贯操作
(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语句记录
https://blog.csdn.net/zhezhebie/article/details/80675577

十三.设置自定义函数和自定义类文件
1.建立出自定义文件 例如:app/common/function.php
2.在项目下的composer.json中添加信息

"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories",
        "app/Library"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Helpers/functions.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

转载:https://www.cnblogs.com/xionghao/p/6858351.html

资源汇总:
https://blog.csdn.net/guoshenglong11/article/details/51953408

猜你喜欢

转载自blog.csdn.net/zhezhebie/article/details/80676044