0%

Laravel框架的学习

做题的时候经常看到laravel但又不知道是啥,百度后也云里雾里。好像是个php下的web框架,那就先把环境搭建起来吧。

0x00 laravel的搭建

因为一开始真的啥也不知道,只好在网上搜教程。搜了很多感觉这几篇对小白很友好。

呜呜呜,花了几天,终于搭好了环境。看了好多好多教程。看了

CVE-2019-9081发现远超我的能力范围。。。让我再多看几天,就这样吧。

0x01 laravel 5.7结构分析

laravel 5.7官方帮助文档

app 文件夹 应用程序核心代码 包含大部分应用程序

  • Console(控制台)

    为核心应用程序提供api,包含所有Artisan命令(artisan是laravel框架支持的一个自动化脚本命令环境,主要的作用是自动建立很多程序框架)

    包含控制台内核(console kernel):注册自定义artisan命令,定义预定任务(scheduled tasks)

  • Http

    为核心应用程序提供api,包含控制器(controllers),中间件(middleware),请求(requests)和基本全部请求的处理逻辑

  • Providers 文件夹

    包含所有对于应用程序的服务提供者(service providers)。服务提供者通过在服务容器中绑定服务、注册事件或执行任何其他任务来引导应用程序,以便为传入的请求准备应用程序。

  • Exceptions 文件夹

    存储 异常处理程序(exception handler),可放置程序抛出的异常

  • User.php

  • Broadcasting 文件夹

    包含应用程序所有广播频道类(broadcast channel classes),目录默认不存在,创建第一个channel时创建

  • Events 文件夹

    目录默认不存在,包含事件类(event classes),在make:event后被创建

    提醒应用程序的其他部分一个给定的操作已经发生,降低程序复杂度和耦合度

  • Job 文件夹

    make:job 后被创建

    包含对于应用程序的排队作业(queneable jobs)

    job可能由应用程序排队;或在请求的lifecycle内同步运行,此时它们是指挥模式(command parttern),被称为‘命令’

  • Listeners (监听器)文件夹

    make:listener 后被创建

    包含处理events的classes,事件监听器接收事件实例并执行逻辑,以响应所触发的event。

    例如:a SendWelcomeEmail listener 处理 a UserRegistered event

  • Mail 文件夹

    make:mail 后被创建

    包含所有表示应用程序发送emails的类。Mail对象允许将构造email的所有逻辑封装在一个简单的类中,以使用Mail::send来发送。

  • Notifications (通知)文件夹

    make:notification 后被创建

    包含应用程序发送的所有事务性通知,例如有关应用程序中发生的事件的简单通知。Laravel的通知功能是通过各种驱动程序发送通知,例如电子邮件,Sack,SMS或存储在数据库中的通知。

  • Policies (策略)文件夹

    make:policy 后被创建

    包含应用程序的授权策略类(authorization policy classes)。策略用于确定用户是否可以对资源执行给定的操作。

  • Rules 文件夹

    make:rule 后被创建

    包含应用程序的自定义验证规则对象。规则用于将复杂的验证逻辑封装在一个简单的对象中。

    相关:验证文件(validation documentation)

  • xxx 文件夹

    make:xxx 后生成的类将在这里存储

    运行 php artisan list make 了解有关make的用法

bootstrap 文件夹 引导

  • app.php 引导框架的文件
  • cache 文件夹 包含性能优化的框架生成文件(路由、服务器缓存文件等)

config 文件夹 应用程序的所有配置文件

database 文件夹 有关数据库 可用来保存SQLite

public 文件夹 包含资源

  • index.php 输入应用程序和配置自动加载的所有请求的入口点
  • 资源 例如图像、css、javascript

resources 文件夹 视图(views)及未编译的原始资源及所有语言文件

  • Lessass
  • javascript

routes 文件夹 应用程序的所有路由定义

  • web.php 为应用程序注册web路由

    web middleware group 提供会话状态、CSRF保护、cookie加密

  • api.php 注册api路由

  • console.php

  • channels.php

storage 文件夹 包含已编译的Blade templates,基于文件的会话、文件缓存、框架生成的其他文件

  • app 文件夹 存储应用程序生成的任何文件

    storage/app/public 存储用户生成文件,应可以公开访问

  • framework 文件夹 存储框架生成文件和缓存

  • logs 文件夹 应用程序日志文件

tests 文件夹 自动测试

vendor 文件夹 包含composer依赖

.editorconfig

.env

.gitattributes

.gitgnore

.htaccess

artisan(工匠)php文件

laravel支持的自动化脚本命令环境,主要作用是自动搭建很多程序框架,只能在laravel根目录使用,因为本文件在根目录

composer.json

compose.lock

nginx.htaccess

package.json

phpunit.xml

readme.md

server.php

webpack.mix.js