Laravel

前言

Laravel 是一个 Web应用框架,php作为底层语言,能够有很好的扩展,拥有比较完善的软件包。

3大核心:路由,控制器,视图

中文官方:https://learnku.com/docs/laravel/8.x

环境搭建

  1. composer下载 :https://getcomposer.org/download/

安装目录下执行

1
echo @php "%~dp0composer.phar" %*>composer.bat
1
2
3
4
5
6
7
8
9
10
composer -V

换源
国内:
# composer config -g repo.packagist composer https://packagist.phpcomposer.com

# composer config -g repo.packagist composer https://packagist.laravel-china.org (这个可能有时会报错)

国外官方:
composer config -g repo.packagist composer https://packagist.org
  1. https://laravelacademy.org/post/2下载框架

或者

利用composer直接下载,在phpstudy 的www目录下执行

1
2
3
composer create-project --prefer-dist  laravel/laravel laravel8  #创建laravel8文件,将框架下载到其中,不指定版本

composer create-project --prefer-dist laravel/laravel laravel 7.x #指定版本

image-20220404135443531

phpstudy 配置:设置根目录到为public
image-20220404135516295

访问如下图

image-20220404135640257

以下代码分析均为laravel8.83.6 框架,目前laravel框架已经更新到9.x了

框架结构

https://learnku.com/docs/laravel/8.x/structure/9356

主要目录分析

image-20220404150632990

app

1
整个laravel最主要部分,主要代码都在app目录下完成,包含了mvc三大模块

image-20220404151946298

  • /app/Http
1
包含控制器,中间件,表单请求等,几乎所有请求处理都在这里

image-20220404153320786

  • /app/Models
1
包含Eloquent 等模型文件,用于处理数据库操作实现。每个表都有对应的model类,通过模型方法进行数据表的增删改查。
  • /app/Http/Controllers/
1
控制器用于将相关的 HTTP 请求封装到一个类中进行处理,如同TP6一样,默认情况下,控制器没有分组,默认都存放在 app/Http/Controllers 目录下。

控制器有类似tp的目录结构

1
2
3
4
5
6
7
8
9
10
11
12
app
├─Http
│ ├─Controllers 控制器目录
│ │ ├─admin 后台Admin模块
│ │ │ ├─IndexController.php 后台首页控制器
│ │ │ ├─CategoryController.php 分类管理控制器
│ │ ├─home 前台Home模块
│ │ │ ├─IndexController.php 前台首页控制器
│ │ │ ├─ArticleController.php 文章展示控制器
│ │ ├─user 用户User模块
│ │ │ ├─IndexController.php 用户首页控制器
│ │ │ ├─TagController.php 标签管理控制器

bootstrap

1
存放所有的第三方代码,包括框架函数源码(/vendor/laravel)、插件和扩展等。

config

1
网站入口,存放对外开放的资源目录,

image-20220404154958546

database

1
数据库操作相关文件(数据库迁移和数据填充)

image-20220404155250445

public

1
index.php进入程序请求的入口, 同时包含前端控制器和资源相关文件

image-20220404155516021

resources

1
2
3
资源文件,前端显示内容,通常利用路由调用views里面的文件进行显示

views 一般以xx.blade.php命名,

image-20220404155645046

routes

1
2
3
4
5
6
7
8
9
10
通过配置路由,进行资源的访问,请求,页面的显示等

web.php 文件包含 RouteServiceProvider 放置在 web 中间件组中的路由,后者提供会话状态、CSRF 保护和 cookie 加密。如果您的应用程序不提供无状态的 RESTful API,那么您的所有路由都很可能在 web.php 文件。

api.php 文件包含 RouteServiceProvider 放置在 api 中间件组中的路由,后者提供速率限制。这些路由是无状态的,因此通过这些路由进入应用程序的请求将通过令牌进行身份验证,并且不能访问会话状态。

console.php 文件是您可以定义所有基于闭包的控制台命令的地方。每个闭包都绑定到一个命令实例,允许使用一种简单的方法与每个命令的进行 IO 交互。尽管这个文件没有定义 HTTP 路由,但是它定义了应用程序中基于控制台的入口点(路由)。

channels.php 文件是您可以注册应用程序支持的所有事件广播频道的位置。

image-20220405005017795

storage

1
编译后的视图、基于会话、文件缓存和其它框架生成的文件

image-20220404155731350

texts

1
应用测试相关文件

vendor

1
需要调用的 依赖模块

数据库配置

.env

1
2
3
4
5
6
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel 数据库名
DB_USERNAME=root 数据库账户
DB_PASSWORD=XXXX 数据库密码

/config—>database.php

1
2
3
4
5
6
7
8
9
10
11
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'XXXX'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

语法

基础路由

routes文件下进行

  • 基本用法

routes/web.php添加,

1
2
3
Route::get('test', function () {
return "hello Laravel";
});

url/test ,进行访问

image-20220405002141084

另外一种用法,利用闭包函数,(例如视图文件),

1
2
3
Route::get('/we', function () {
return view('welcome');
});

视图文件在resouces/views/中welcome.blade.php

image-20220405003140886

访问(http://127.0.0.1:10001/we)

image-20220405003209479

还有更多的路由请求方式就不在叙述了(https://laravelacademy.org/post/21970)毕竟我不是开发啊

  • 在api.php下定义的路由需要加上/api/

image-20220405003738965

http://127.0.0.1:10001/api/testapi

image-20220405003809337

等等等

laravel8 的路由用法的变化

laravel7等Laravel旧版本中,RouteServiceProvider类中包含$namespace属性,值为AppHttpControllers,此属性可自动为路由添加AppHttpControllers前缀。

即直接进行下面方式路由配置

1
Route::get('login', 'LoginControl@index');

laravel8.x 中该属性值默认为null,路由中只能使用标准PHP调用语法(需填写controller全路径)

image-20220405001507199

方法1:取消protected $namespace = 'App\\Http\\Controllers';注释

方法2:在进行下面路由配置

1
2
3
use App\Http\Controllers\LoginControl;      

Route::get('login', [LoginControl::class, 'index']);

创建新控制器文件

1
php artisan make:controller  LoginController

简单实例应用路由调用控制器

这边不知道为啥环境有问题,,,,一直报错。

参考:

https://cloud.tencent.com/developer/article/1723191 Laravel框架分析

https://mp.weixin.qq.com/s/aFGw2fPgjoSTD6zK_j-oHA 零基础学习laravel8

https://blog.csdn.net/wjcms/article/details/109016643 laravel8更新之路由调整

漏洞分析

  • Copyrights © 2020-2023 Shmily-ing
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信