Hello Laravel! Laravel 入门教程
Hello Laravel! 准备
什么是 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
选择下面的版本安装
下载成功之后,按照提示直接点击下一步下一步安装即可。再 Laraegon 安装成功之后,你会看到软件界面
注意一定要记住 Laragon 安装的目录
看到下面的界面,就算是安装成功了
设置工作目录
这一步非常重要,一定要设置好,因为 Laragon 会帮根据文件目录名称自动创建虚拟主机,就省的自己去设置虚拟域名之类的了。
点击右上角的设置
然后会看到下面的界面,根据自己实际的项目目录设置对应的值
如图,本人所有的项目都设置在 C 盘的 project
目录,所以在之后安装 Laravel 项目的时候,我都会在 c:\project
目录下安装
添加 PHP 版本
由于需要使用 PHP >= 8.2
版本,所以这里需要安装添加一个 8.2 版本,Laragon 添加 PHP 版本非常简单。可以到 PHP 软件包下载页面
找到对应版本,这里选择线程安全版本 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 安装比较简单,只需要到下载的页面即可
点击下面的所指下载安装
下载完成之后,双击 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 目录就是我们实现功能开发的目录
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/HelloController
somecode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?