Hello Laravel! 准备
- Hello Laravel! 准备
- 什么是 Laravel?
- 为什么选择 Laravel?
- 优雅的语法
- 丰富的功能
- 强大的社区支持
- 安全性
- 易于扩展
- Laravel 的流行程度
- 其他流行的 Web 框架对比
- 环境准备
- 下载 Laragon
- 设置工作目录
- 添加 PHP 版本
- 设置环境变量
- Composer 安装
- 初始化 Laravel 项目
- 配置数据库
- 目录结构
app
目录bootstrap
目录config
目录database
目录public
目录resources
目录routes
目录storage
目录tests
目录vendor
目录
什么是 Laravel?
Laravel 是一个基于 PHP 的开源 web 应用程序框架,由 Taylor Otwell 创建并于 2011 年首次发布。它遵循 MVC(模型-视图-控制器)设计模式,旨在帮助开发者构建优雅、简洁且易于维护的 web 应用程序。
为什么选择 Laravel?
优雅的语法
Laravel 以其简洁和易读的代码风格著称,使开发者能够以最小的代码编写出功能强大的应用程序。它的语法简洁明了,减少了开发者的工作量,并提高了代码的可读性和可维护性。
丰富的功能
Laravel 提供了许多开箱即用的功能,如:
- 路由系统:定义应用程序的 URL 路径和对应的控制器。
- Eloquent ORM:一个强大的 ActiveRecord 实现,用于处理数据库操作。
- Blade 模板引擎:一个简单、灵活的模板引擎,用于生成 HTML。
- 中间件:方便处理 HTTP 请求的过滤和修改。
- 任务调度:通过 Cron 作业自动执行任务。
强大的社区支持
Laravel 拥有一个活跃且庞大的社区,丰富的文档和大量的第三方包和插件,使开发者可以轻松找到所需的资源和解决方案。官方还提供了详细的文档和教程,帮助新手快速上手。
安全性
Laravel 在开发过程中考虑到了许多常见的安全问题,如 SQL 注入、跨站请求伪造(CSRF)和跨站脚本攻击(XSS)。框架内置了各种工具和机制来保护应用程序的安全。
易于扩展
由于 Laravel 的模块化设计和灵活的架构,开发者可以根据需要轻松扩展和定制框架。无论是添加新功能还是集成第三方服务,Laravel 都提供了方便的接口和工具。
Laravel 的流行程度
Laravel 的流行程度可以通过 GitHub 的 star 数等指标来衡量。截至 2024 年,Laravel 在 GitHub 上拥有超过 74k 个 stars,显示了其在开发者社区中的广泛接受度。
为了更好地理解 Laravel 的受欢迎程度,我们可以将其与其他流行的 web 框架进行比较:
其他流行的 Web 框架对比
- Django (Python):Django 是一个高层次的 Python web 框架,专注于快速开发和简洁的设计。截至 2024 年,Django 在 GitHub 上有约 72k 个 stars。
- Ruby on Rails (Ruby):Ruby on Rails 是一个流行的 Ruby web 框架,强调开发效率和代码优雅。截至 2024 年,Rails 在 GitHub 上有约 53k 个 stars。
- Spring Boot (Java):Spring Boot 是一个基于 Java 的框架,用于创建独立的、生产级的 Spring 应用程序。截至 2024 年,Spring Boot 在 GitHub 上有约 69k 个 stars
- Express (Node.js):Express 是一个基于 Node.js 的快速、简洁的 web 框架,适用于构建单页、多页和混合 web 应用程序。截至 2024 年,Express 在 GitHub 上有约 62k 个 stars。
通过与这些流行框架的对比,可以看出 Laravel 在 web 开发社区中拥有很高的知名度和广泛的使用基础。
环境准备
以下步骤均在 Windows10 下完成
首先在学习 Laravel 之前,需要准备必要的环境,这次入门教程以最新的 Laravel 版本作为开发基础,也就是 Laravel11,它所需要的 PHP 版本环境最低要求是 >=8.2
, 不光是 PHP,Laravel 作为全栈框架还需要 Node 环境。本次课程还需要用 Nginx
和 Mysql
等环境。所以为了简化入门教程的带来的环境困恼,在这里我们选择了集成这些软件包的开发软件,当然如果你是使用其他的软件,例如 wamp
phpstudy
之类的也是可以的。
下载 Laragon
- 下载 Laragon
选择下面的版本安装
下载成功之后,按照提示直接点击下一步下一步安装即可。再 Laraegon 安装成功之后,你会看到软件界面
注意一定要记住 Laragon 安装的目录
看到下面的界面,就算是安装成功了
设置工作目录
这一步非常重要,一定要设置好,因为 Laragon 会帮根据文件目录名称自动创建虚拟主机,就省的自己去设置虚拟域名之类的了。
点击右上角的设置
然后会看到下面的界面,根据自己实际的项目目录设置对应的值
如图,本人所有的项目都设置在 C 盘的 project
目录,所以在之后安装 Laravel 项目的时候,我都会在 c:\project
目录下安装
添加 PHP 版本
由于需要使用 PHP >= 8.2
版本,所以这里需要安装添加一个 8.2 版本,Laragon 添加 PHP 版本非常简单。可以到 PHP 软件包下载页面
- PHP8.2 版本下载
找到对应版本,这里选择线程安全版本 VS16 x64 Thread Safe (2024-May-08 07:21:58)
点击 zip
下载 ⏬
下载之后,找到 Laragon 的安装目录,找到目录下的 bin\php
目录,然后复制上面下载好的 PHP zip 包到该目录
直接解压到当前目录即可,解压完成之后呢,找到 windows 右下角的图标,如下图所示
右击 Laragon 的图标,然后选择 PHP,如图,选择对应的 PHP 版本即可
然后再 Laragon 软件,点击启动 nginx
和 mysql
,那么项目所需要的环境就已经安装好了
设置环境变量
找到编辑环境变量配置
,打开它
点击环境变量
找到 path
变量,然后点击它
然后再点击新建,在复制你自己本地的 PHP 版本解压后的目录地址 C:\software\laragon\bin\php\php-8.2.15-Win32-vs16-x64
(这是本人的本机目录) 粘贴到新建的变量中
打开 cmd 运行 php -v
, 你会看到下面的输出就代表成功了
这里我建议不要使用 windows 自带的命令行,使用 Laragon 带的 cmder
更好。
因为支持
Linux
相关命令,用起来更顺手。而且可以随意设置 PHP 版本,不需要设置环境变量(需要重新打开一个新的 cmder)。
打开 Laragon 软件界面,如下图,点击它
然后看到软件界面如下
Composer 安装
第二步,安装 Composer。composer 安装比较简单,只需要到下载的页面即可
- composer 安装
点击下面的所指下载安装
下载完成之后,双击 exe
,点击下一步下一步即可完成安装即可,安装完成之后呢,打开 cmder
,输入下面的命令
composer -v
安装成功之后,还需要设置镜像,目前据我所知,华为镜像更新的比较及时,可以复制下面的命令的设置镜像
composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
设置好镜像之后,来安装初始化 Laravel 的初始化项目,首先我们安装 Laravel 项目安装器,使用下面的命令
composer global require laravel/installer
执行命令之后,等待安装完成即可。安装完成之后,使用下面的命令
Laravel -v
会有如图输出
初始化 Laravel 项目
Laravel 安装器安装完成之后,我们就可以来安装 Laravel 项目了。还记得上面说的设置工作目录吗?现在我要在 c:\project
目录下创建新项目。所以要求你也需要在你自己实际的设置的工作目录下,使用下面的命令来创建项目
laravel new lara-study
按照如图所示,选择对应的选项进行安装。这里我们尽量简单的来,不使用任何包装的包,尽量以原生框架开发
然后中途会有提示使用什么数据库驱动,如下图,教程使用 Mysql
,图片安装上选择了 yes,出现了报错,这个错误可以忽略。为了避免误解,请各位在安装时候输入
no
输入完成之后,继续等待它安装完成就行了。
完成之后,记得重启 Laragon,在自动创建虚拟主机,如下图,点击停止之后,再点击启动将会自动创建虚拟机
Laragon 会创建一个以目录名称命名的lara-study.test
虚拟域名,直接直接通过它访问项目。如果你出现如下图的报错,请不要担心,只是数据没有配置而已,等会下面来配置数据库信息
配置数据库
本教程使用的 Mysql 数据库作为驱动,所以数据库配置 Mysql 即可。找到右下角的 Laragon 软件,如图所示,修改 mysql 的 root 密码。
更换的时候必须停止 Mysql 服务,软件会有提示
设置本地的 root 密码,设置完成之后再启动就可以了。
下面使用你常用的编辑器打开项目,我这里使用的是 phpstorm
IDE 打开。找到 .env
文件,如下所示
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lara_study // 数据库名称
DB_USERNAME=root
DB_PASSWORD= // 配置你刚才设置 root 密码
配置完成之后,先不着急访问项目,我们先执行下一个命令,来创建数据库,因为现在链接了数据库,但没有 database 还没有设置,所以依然是报错的状态。在项目根目录,执行下面的命令
php artisan migrate
执行命令之后,会询问你是否创建数据库,直接回车或者填写 yes
自动创建数据库
执行成功之后,再来访问 lara-study.test
域名,哦豁!!!欢迎来到 Laravel 🎉 !!! Welcome !!!
目录结构
app
目录
app
目录包含您应用程序的核心代码。我们很快会更详细地探索这个目录;然而,您应用程序中几乎所有的类都将位于此目录。
app 目录详解 这里不多做赘述
app 目录就是我们实现功能开发的目录
bootstrap
目录
bootstrap
目录包含引导框架的 app.php
文件。此目录还包含一个 cache
目录,其中包含用于性能优化的框架生成文件,例如路由和服务缓存文件。
config
目录
顾名思义,config
目录包含您应用程序的所有配置文件。通读所有这些文件并熟悉您可用的所有选项是个好主意。
config 目录在之后开发过程中探索
database
目录
database
目录包含您的数据库迁移、模型工厂和种子文件。如果您愿意,还可以使用此目录来保存 SQLite 数据库。
该目录主要实现创建数据库表的迁移文件
public
目录
public
目录包含 index.php
文件,这是所有请求进入您应用程序的入口点,并配置自动加载。此目录还包含您的资产,如图像、JavaScript 和 CSS。
resources
目录
resources
目录包含您的视图以及原始的、未编译的资产,如 CSS 或 JavaScript。
routes
目录
routes
目录包含您应用程序的所有路由定义。默认情况下,Laravel 附带了两个路由文件:web.php
和 console.php
。
web.php
文件包含 Laravel 放置在 web
中间件组中的路由,该组提供会话状态、CSRF 保护和 cookie 加密。如果您的应用程序不提供无状态的、RESTful API,则您的所有路由很可能都将在 web.php
文件中定义。
console.php
文件是您可以定义所有基于闭包的控制台命令的地方。每个闭包都绑定到一个命令实例,允许简单地与每个命令的 IO 方法进行交互。尽管此文件不定义 HTTP 路由,它定义了基于控制台的应用程序入口点(路由)。您还可以在 console.php
文件中安排任务。
storage
目录
storage
目录包含您的日志、编译的 Blade 模板、基于文件的会话、文件缓存以及框架生成的其他文件。此目录分为 app
、framework
和 logs
目录。app
目录可用于存储应用程序生成的任何文件。framework
目录用于存储框架生成的文件和缓存。最后,logs
目录包含您应用程序的日志文件。
storage/app/public
目录可用于存储用户生成的文件,如应该公开访问的个人资料头像。您应该在 public/storage
创建指向此目录的符号链接。您可以使用 php artisan storage:link
Artisan 命令创建链接。
tests
目录
tests
目录包含您的自动化测试。默认情况下提供了 Pest 或 PHPUnit 单元测试和功能测试示例。每个测试类应以 Test
单词为后缀。您可以使用 /vendor/bin/pest
或 /vendor/bin/phpunit
命令运行测试。或者,如果您希望对测试结果有更详细和美观的表示,您可以使用 php artisan test
Artisan 命令运行测试。
vendor
目录
vendor
目录包含您的 Composer 依赖项。
不必为这么多文件夹感到害怕,实际上在开发过程中与我们打交道的最多的就是
App
目录和routes
目录。至于其他目录,至少在现在可以放一放,没必要太关注。
那么到这里,关于 Laravel 初始化的过程已经全部讲解结束,还顺带了解了下 Laravel 的目录结构。当然在后续篇章中,我们不会立即讲解框架的一些概念,例如容器
,服务提供者
门面
之类的晦涩难懂的概念,因为这对于入门教程来说是不需要去深入了解的。但是如果涉及到相关的概念,教程也会指出来。教程的目的是尽快能让你使用框架开发出来一个项目,能够将自己的想法用 Laravel 表达出来。
后面案例代码将会标记其所在文件相对路径,以根目录为参考物。例如
// app/Htttp/HelloControllersomecode
原文链接