Hello 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
Hello Laravel! 准备的更多相关文章
- TODO:Laravel增加验证码
TODO:Laravel增加验证码1. 先聊聊验证码是什么,有什么作用?验证码(CAPTCHA)是"Completely Automated Public Turing test to te ...
- TODO:Laravel 内置简单登录
TODO:Laravel 内置简单登录 1. 激活Laravel的Auth系统Laravel 利用 PHP 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...
- TODO:Laravel 使用blade标签布局页面
TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...
- TODO:搭建Laravel VueJS SemanticUI
TODO:搭建Laravel VueJS SemanticUI Laravel是一套简洁.优雅的PHP开发框架(PHP Web Framework).可以让你从面条一样杂乱的代码中解脱出来:它可以帮你 ...
- Bringing Whoops Back to Laravel 5
You might be missing the "prettier" Whoops error handler from Laravel 4. If so, here's how ...
- 在 Laravel 中使用图片处理库 Integration/Image
系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7 ...
- Laravel Composer and ServiceProvider
Composer and: 创建自定义类库时,按命名空间把文件夹结构组织好 composer.json>autoload>classmap>psr-4 composer dump-a ...
- Laravel 5.x 请求的生命周期(附源码)
Laravel最早接触是刚开始实习的时候,那时通过网上的学习资料很快便上手,开发模块接口.后来没有什么深入和总结,但是当我刚开始学Laravel的时候,我对Laravel最大的认识就是,框架除了路由. ...
- Laravel 5.3 登录注册底层实现详解
每个控制器都使用 trait 来引入它们需要的方法 */ 用于处理用户登录认证 用于处理新用户注册 包含重置密码逻辑 用于处理重置密码邮件链接 认证需要的视图 包含了应用的基础布局文件 ...
- Laravel - 安装与配置
有多重途径可以安装Laravel,下面是通过composer安装laravel的方法.Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.c ...
随机推荐
- 在Centos 8 服务器用tmux多开窗口
在 CentOS 服务器上使用 tmux 来多开窗口是一个高效的方式.tmux 是一个终端复用器,它允许你在一个终端窗口中打开多个终端会话,还可以在会话之间轻松切换,非常适合长时间运行程序或多任务操作 ...
- SQL CREATE INDEX 语句- 提高数据库检索效率的关键步骤
SQL CREATE INDEX 语句 SQL CREATE INDEX 语句用于在表中创建索引. 索引用于比其他方式更快地从数据库中检索数据.用户无法看到索引,它们只是用于加速搜索/查询. 注意: ...
- 使用 K8S 部署 RSS 全套自托管解决方案- RssHub + Tiny Tiny Rss
前言 什么是 RSS? RSS 是一种描述和同步网站内容的格式,是使用最广泛的 XML 应用.RSS 搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者.发布一个 RSS 文件后,这个 ...
- windows下配置mask2former(facebook版)
1.安装Anaconda 2.安装PyCharm 3.创建python3.8环境(最高3.8因为有一个依赖包最高支持python3.8) 4.安装GCC 下载地址:https://sourceforg ...
- CentOS 利用pam控制ssh用户的登录及SSH安全配置
CentOS 利用pam控制ssh用户的登录 有关pam的使用,请找相关的文档.下面只说两个简单的例子. 首先在/etc/pam.d/sshd加入一句: account required ...
- 重新整理.net core 计1400篇[七] (.net core 中的依赖注入)
前言 请阅读第六篇,对于理解.net core 中的依赖注入很关键. 和我们上一篇不同的是,.net core服务注入保存在IServiceCollection 中,而将集合创建的依赖注入容器体现为I ...
- 使用 Docker 部署 instantbox 轻量级 Linux 系统
1)instantbox 介绍 GitHub:https://github.com/instantbox/instantbox instantbox 是一款非常实用的项目,它能够让你在几秒内启动一个主 ...
- 【笔记】Oracle列转行unpivot&行转列 PIVOT
unpivot 说明:将表中多个列缩减为一个聚合列(多列转多行) 语法:unpivot(新列名 for 聚合列名 in (对应的列名1-列名n )) 写到了一个力扣的题,发现这个unpivot函数还没 ...
- HL7传输协议
HL7消息通过各种TCP/IP传输发送,其中一些包括: 下层协议(LLP) 文件传输协议(FTP) 简单对象访问协议(SOAP) 简单邮件传输协议(SMTP) 尽管HL7可以使用多种传输协议进行数据传 ...
- 力扣537(java)-复数乘法(中等)
题目: 复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件: 实部 是一个整数,取值范围是 [-100, 100]虚部 也是一个整数,取值范围是 [-100, ...