Skip to content

Laravel框架项目搭建

约 1818 字大约 6 分钟

PHPLaravel

2022-02-20

前言

上回说到接手了一个 PHP 项目,使用 Laravel 框架实现,今天将介绍 Laravel 项目的搭建过程。

1. 环境安装

1.1. 安装 PHP 的开发环境

安装过程请见上一篇文章 PHP运行环境配置 。这里我安装的版本是 PHP 7.4.27 (cli)

1.2. 安装 Composer

Laravel 是 PHP 开发应用广泛的框架,创建 Laravel 工程需要使用到 Composer,可以通过命令行安装,或下载安装 Composer-Setup.exe 程序。 这里我使用下载 exe 程序安装的方式,注意,有的教程会说设置镜像源,这里不建议设置,因为镜像源中的软件不够全,很容有些软件下载不到。 默认目录安装时,composer.phar 文件路径为:C:\ProgramData\ComposerSetup\bin ,Conposer 的配置文件目录为:C:\Users\maye\AppData\Roaming\Composer 。这里我安装的版本是 Composer version 2.2.6 2022-02-04 17:00:38

1.3. 创建 Laravel 工程

Laravel 英文文档 中文文档 。 在指定目录下打开 cmd 命令行执行:composer create-project --prefer-dist laravel/laravel laravel-demo "5.5.*" 。目前 Laravel 版本已经到 8.x 了,这里我创建 5.5.x 是因为接手的项目是 Laravel 5.5.49 版本的。 由于是从国外服务器下载的,注意保持网络畅通,然后用 PhpStorm 打开。 工程创建也可以使用 PhpStorm,具体方式百度,需要指定 composer.phar 文件,然后在创建步骤中搜索 Laravel/Laravel 即可。

1.4. 安装 NodeJs

这里我下载的是 v14.15.5 版本,在列表中找到 node-v14.15.5-x64.msi 文件下载安装。 npm 设置淘宝镜像,加速下载:npm config set registry https://registry.npm.taobao.org,通过 npm config get registry 查看是否配置成功。然后在 Laravel 工程中运行 npm install 下载依赖。

2. 工程运行

上述操作完成后,我们就成功创建了一个 Laravel 工程,在工程的根目录下执行 php artisan serve 即可启动,默认启动在 8000 端口,也可以通过 php artisan serve --port=9000 指定端口,然后使用浏览器打开 localhost:8000 查看。按下 Ctrl + C 即可关闭服务。

3. 目录说明

Laravel 工程目录结构如下:

app包含应用程序的核心代码,默认情况下,这个目录位于命名空间 App 下。

Console包含了所有自定义的 Artisan 命令

Envents包含了事件类。可以使用事件来提醒应用其他部分发生了特定的操作,为应用提供了大量的灵活性和解耦

Exceptions包含了应用的异常处理器

Http包含了控制器、中间件和表单请求。几乎所有的进入应用的请求的处理逻辑都被放在这里

Jobs此目录默认不存在,在运行 Artisan 命令 make:job 时生成,用于存放应用中的队列任务

Listeners包含了用来处理事件的类。事件监听器接收事件实例并执行响应该事件被触发的逻辑。例如,UserRegistered 事件可能由 SendWelcomeEmail 监听器处理

Mail此目录默认不存在,在运行 Artisan 命令 make:mail 时生成,目录包含应用所有的邮件发送类

Notifications此目录默认不存在,在运行 Artisan 命令 make:notification 时生成,目录包含应用发送的所有事务性通知

Policies此目录默认不存在,在运行 Artisan 命令 make:policy 时生成,目录包含了应用的授权策略类

Providers包含了应用的所有 服务提供器。服务提供器通过在服务容器中绑定服务、注册事件、以及执行其他任务来为即将到来的请求做准备来启动应用

Roles此目录默认不存在,在运行 Artisan 命令 make:rule 命令时生成,目录包含应用自定义验证规则对象

bootstarp包含引导框架并配置自动加载的文件。该目录还包含了一个 cache 目录,存放着框架生成的用来提升性能的文件,比如路由和服务缓存文件

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

databse包含数据填充和迁移文件。你还可以把它作为 SQLite 数据库存放目录

public包含了入口文件 index.php,它是进入应用程序的所有请求的入口点。此目录还包含了一些资源文件,图片、JavaScript 和 CSS

resources包含了视图和未编译的资源文件(如 LESS、SASS 或 JavaScript)。此目录还包含所有的语言文件

routes包含了应用的所有路由定义,Laravel 默认包含了几个路由文件:web.php、api.php、 console.php 和 channels.php

web.php包含 RouteServiceProvider 放置在 web 中间件组中的路由,它提供会话状态、CSRF 防护和 cookie 加密。如果应用不提供无状态的、RESTful 风格的 API,则所有的路由都应该在 web.php 文件中定义

api.php包含 RouteServiceProvider 放置在 api 中间件组中的路由,它提供了频率限制。这些路由都是无状态的,所以通过这些路由进入应用请求旨在通过令牌进行身份认证,并且不能访问会话状态

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

channels.php用来注册你的应用支持的所有的事件广播渠道的地方

storage包含编译的 Blade 模板、基于文件的会话和文件缓存、以及框架生成的其他文件

tests包含自动化测试文件

vendor包含 Composer 依赖包

以上列出了 Laravel 工程的部分目录,详见 Laravel 的文件夹结构。Laravel 没有严格地限制任何给定的类的位置,你可以按照喜好整理应用的目录结构,只要它们能被 Composer 自动加载。

Laravel 框架的所有配置文件都保存在 config 目录中。在新安装好的 Laravel 应用程序中,其根目录会包含一个.env.example文件。如果是通过 Composer 安装的 Laravel,该文件会自动更名为.env。否则,需要你手动更改一下文件名。 应用程序当前所处环境是通过.env文件中的 APP_ENV 变量确定的。

PHP 中与数据库交互的模型称之为 Eloquent,它并不需要像 Java 一样定义 Entity 实体,倒像是 Java 的 Dao 层。默认把 Eloquent 的模型放在 app 目录下,并且允许开发者自行选择放置在何处。

4. 部署方式

使用 Nginx 部署 Laravel 工程,常见文档