PHP-Laravel框架学习笔记

administrator 173 0
最近放寒假[aru_22]总寻思着学点啥呢?之前就准备好了做web这一块,然后想了下我前端学html+css学了bootstrap,js学了jquer,数据可视化学了charts也凑合,就是后端语言PHP还没学框架呢[aru_43]行吧,记得之前看过laravel不错(我才不会说不错的原因是我觉得它的图标不错的[aru_59])不过看了下文档,算了,看不下去了,必须做点笔记了。这不是教程,都是第一次学习的笔记,大家酌情参考,并且此笔记不是完整手册,如果你看到了本文,或许对你理解手册有一定帮助,手册是:https://learnku.com/docs/laravel/6.x/,如果有问题还望大佬指出。

Laravel简介

laravel是一个简洁优雅的php框架,我现在还没理解到这句话,因为它似乎让我的项目变得更麻烦了,那为什么要使用框架?在大型项目中可以节省时间,提供更加全面的安全设计,不至于安全漏洞一大堆,也有益于后期维护,至于为什么我现在还不知道,因为我也才刚学[aru_39]

laravel框架采用了MVC架构,MVC架构是啥呢?

M(model-模型)、V(view-视图)、C(controller-控制器),感觉model是一个数据模型啊,因为它总跟数据库联系紧密,v是视图,就是前端页面咯,c是控制器,似乎是一个枢纽,也可以理解成处理器吧,负责调度各种工作的进行以及数据传递。MCV有两种交互模式

1:控制器从模型中取出数据,在视图上显示。

2:控制器从食视图中响应操作,读写模型,再返回渲染到视图上。

laravel的环境要求:这个我就不管了,要求是有的,要用再百度找吧[aru_4]

哦,差点忘了展示一下laravel的图标了,看这里:

PHP-Laravel框架学习笔记

laravel安装

直接采用Composer来安装吧,Composer管它是啥呢,它是php的一个依赖管理工具,不过我不喜欢想太多,就把它当个php的软件商店,php是个操作系统,laravel是应用程序,Composer是软件商店,就像我用的华为手机,android系统,上面我安装了很多应用,都是从官方的软件商城安装的。

Composer长这样:

PHP-Laravel框架学习笔记

下载Composer

这里我已经安装完了,不会装请百度,我记得好像是要选择php的运行文件来着?然后还要手写它的环境变量path,教程百度都有,实在看不明白加群问问吧,我们群号:316783021。

首先安装Composer,这个因为Composer是没有界面的,得敲cmd命令(不然配置环境变量干啥[aru_49])代码是:

composer global require laravel/installer

然后新建一个laravel项目就行了:

laravel new laravelitem

然后你的电脑会自动建立laravelitem目录,建立在你cmd执行时的目录里。

那现在我们打开这个项目,看看里面都有啥。

Lavel的目录结构

算了,这里偷个懒,去看看别人的文档就明白了:

点击跳转

路由

说到路由你们是不是想到了家里的路由器?我也是这么想的,路由是laravel的重要特性,不同于一般的开发形式,我们写的URL直接和相应的文件建立连接,在laravel里面,我们把URL通过路由定向到各种控制器、中间件或者视图。

基本路由

路由包含了所有的HTTP请求类型比如get、post、put,我们这里测试一下get方法请求吧:

我们的默认路由文件是放在\routes\web.php里面的,在这里我们可以定义路由,比如我们写上:

Route::get('test',function(){
   return "这是测试信息";
});

PHP-Laravel框架学习笔记

访问域名/test,会得到这个页面:

PHP-Laravel框架学习笔记

这就是请求test路径的路由被输出了一个闭包里的内容(怎么听起来怪怪的[aru_63])

闭包:闭包就是类似于匿名函数这样的东西,匿名函数就是写个函数不写名字的那种(真会偷懒[aru_7])

重定向路由

重定向路由可以很方便的把页面跳转到其他页面,默认是302跳转,这部分手册里面说的很直白,那我照搬咯:

这样写可以吧访问here地址的请求跳转到there。这里走的是302状态:

Route::redirect('/here', '/there');

下面两个同上,唯一不同的地方就是采用了301代码跳转。

Route::redirect('/here', '/there', 301);

Route::permanentRedirect('/here', '/there');

视图路由

有时候我们访问一个url只需要返回一个视图这时候我们使用视图路由就可以了。还记得刚刚打开laravel页面的时候显示的那个欢迎页面吗?

PHP-Laravel框架学习笔记

这个页面的路由:

Route::view('/', 'welcome');

这就是一个最简单的视图路由。

路由参数

这是个挺神奇的地方,laravel可以把传统的url的目录结构的某一部分当参数来耍[aru_1]

比如,我们常规的url带参数是这样的:/user?id=6&username=yui

在laravel中我们可以构造成这样:/user/id/6/username/yui

代码:

Route::get('user/{id}/username/{username}', function ($id, $username) {return '用户' . $username . "的id是" . $id;});

定义的参数可以当做函数形参被引用。

PHP-Laravel框架学习笔记

当然,laravel也支持定义可选参数,只需要把原来的{id}写成{id?},但是注意:这样写定义形参的时候要给参数赋默认值。但我发现如果这个参数在url中间的位置,留空不写会报404。

温馨提示

文档中还有提到路由参数支持使用正则表达式做格式限制,这个功能就不错,可以了解一下:https://learnku.com/docs/laravel/6.x/routing/5135#5cf9b4

控制器

在目录app/Http/Controllers中是laravel的控制器,我们一般用路由绑定它们进行其他操作,比如我们可以为了发送电子邮件写一个简单的控制器:

PHP-Laravel框架学习笔记

<?php
namespace App\Http\Controllers;

use Mail;

class EmailController extends Controller
{
    public function send()
    {
        Mail::raw('测试!', function ($message) {
            $to = '1323592980@qq.com';
            $message->to($to)->subject('如果收到了这个邮件表示我们成功了!');
        });
    }
}

写好路由:

Route::any('mail','EmailController@send');

这样,我们访问mail路径,就可以发送一封邮件了。注:laravel默认封装了mail类,我们可以直接静态访问它的raw方法完成我们需要的业务逻辑而无需关心它是如何发信的,这就是oop思想的关键部分

PHP-Laravel框架学习笔记

中间件

中间件被用来保护需要认证的操作,中间件决定提交的数据能否通过认证进入下一个步骤。

查看说明
定义好后记得注册:
// 在 App\Http\Kernel 类中...

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
然后,我们就能在路由里绑定这个中间件了。
在路由后面写->middleware('name')就可以了:
Route::get('/', function () {
    //
})->middleware('first', 'second');

这样就能实现访问/的时候通过中间件first和second检验,如果有异常就能及时阻断。

表单POST

laravel在执行post的时候也需要特别注意,它与php原生的写法还是有很大区别的。

首先,创建一个表单,这部分跟php原生差不多,我们要有一个路由,能指向含有表单的view视图,然后在视图上用from元素创建表单,用input等组件接收数据。

温馨提示

特别注意的是:laravel给我们默认开启了防csrf攻击功能,因此强调每个post表单都要通过视图模板引擎引入@csrf令牌,该令牌能创建一个隐藏的input,在post提交时会附带提交一个_token来防止跨站攻击。

其次,我们在接收数据的地址上构造一个post路由,将其指向到操作该数据的控制器上:

Route::post('/api', 'PostContentController@post');

最后,构造我们的控制器,此时需要注意取出post数据的方法也跟原生的不太一样,我们采用laravel的Resquest类来处理:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PostContentController extends Controller
{
    public function post(Request $res)
    {
        dd($res->all());
    }
}

通过all方法,可以取回传入的数据。

题外话-关于用户验证

【未完待续。。。】

发表评论 取消回复
表情 图片 链接 代码

分享