前言:大二(2016)的时候就接触了PHP,语法学到一定程度之后开始学习框架,在网上比较一番之后决定先学习 ThinkPHP ,因为据说对新手友好。但是一直知道 Laravel 是 PHP 众多框架中最火热的一款,之前有看视频学习,但视频一上来就给我整一堆不知道具体有什么用的新概念脑子都是懵的,遂从入门到放弃。现在开始下定决心正式学习,并记录笔记和同为 Laravel 新手的朋友分享学习经历,也以防日后遗忘便于回顾,笔记内容包括但不限于Laravel学习。
学习资源主要为这本书 《Laravel 入门教程》 ,这篇文章为这本书的免费部分内容概括,你将了解到
- 中文排版规范
- Laravel 开发环境搭建
- 运行第一个应用 Hello World
- Composer 基础知识
- Vim 编辑器的基本使用
- Git 与 GitHub 的基本使用
(ps:找到适合自己的学习资源很重要,网上各种教学视频网站的免费教学视频知识零散,且不一定适合新手)
1.中文排版规范
为养成良好的写作习惯,使写出的文章在排版上不至于辣读者眼睛,中文排版规范有必要学习一下,参考的 这篇文章 ,主要内容有:
- 中英文之间需增加空格:
在 LeanCloud 上,数据存储是围绕 AVObject 进行的。
- 中文与数字之间需增加空格:
今天出去买菜花了 5000 元。
- 数字与单位之间需增加空格:
我家的光纤入屋宽频有 10 Gbps,SSD 一共有 20 TB。
- 全形标点与其它字符之间不加空格:
刚刚买了一部 iPhone,好开心!
- 不重复使用标点符号:
德国队竟然战胜了巴西队!
- 标点使用全形中文标点:
嗨!你知道嘛?今天前台的小妹跟我说「喵」了哎!
- 数字使用半形字符:
這件蛋糕只卖 1000 元。
- 遇到完整的英文整句,特殊名词,其内容使用半形标点:
贾伯斯那句话是怎么说的?「Stay hungry, stay foolish.」
- 专有名词使用正确的大小写:
我们的客戶有 GitHub、Foursquare、Microsoft Corporation、Google、Facebook。
- 不要使用不地道的缩写:
我們需要一位熟悉 JavaScript、HTML5,至少理解一种框架(如 Backbone.js、AngularJS、React 等)的前端开发者。
2.开发环境搭建
主要参考的这篇文章 开发环境的搭建 - Windows ,了解并学会使用如下工具:
- VirtualBox: Oracle 公司的开源虚拟机软件,支持大部分流行的系统,如:Mac, Windows, Linux 等。
- Vagrant:用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。通过编写一个 Vagrantfile 文件来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本
- Homestead:Homestead 利用 Vagrantfile 提供的便利,定制了一整套的可配置、可移植和复用的 Laravel 开发环境。Homestead 虚拟机里面包含了 Nginx Web 服务器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时需要用到的各种软件。
这里可能有朋友对这三个工具之间的关系迷迷糊糊的,在此写下我的个人见解:VirtualBox 是一款虚拟机软件,可以用它建立多个虚拟机,相当于有多个虚拟PC;Vagrant 是用来管理虚拟机的工具,我们可以用它在命令行对某个虚拟机进行各种操作,如创建、启动、登录、退出等;Homestead 是一个集成的 PHP 开发环境,包含了 Laravel 开发时需要用到的各种软件,可把它看成一个盒子,可以用 Vagrant 以这个盒子为模板创建一个虚拟机,日后可以以该虚拟机为开发环境。(个人理解,如有误敬请指正)
Homestead
Homestead 的下载、安装、配置教程都在这篇文章中 开发环境的搭建 - Windows
Homestead.yamf 配置文件分为以下几个部分:
- 虚拟机设置
Homestead 支持我们对虚拟机的 IP,内存,CPU,虚拟机的默认提供者进行配置。这里我们基本不需要做任何配置,因此可以跳过。 - SSH 秘钥登录配置
- 共享文件夹配置
通过 folders 来指明本机要映射到 Homestead 虚拟机上的文件夹。 - 站点配置
站点配置允许你在主机里,通过域名来访问虚拟机里的 Laravel 应用。 - 数据库配置
为 Homestead 指定数据库名称 - 自定义变量.
运行 Vagrant
Vagrant 常用命令:
vagrant up:启动 Vagrant
vagrant halt:关闭 Vagrant
vagrant ssh:通过 SSH 登录Vagrant(需先启动 Vagrant)
vagrant destroy:删除 vagrant
vagrant provision:重新应用更改 vagrant 配置
Homestead 日常使用步骤为:
- 在桌面单击鼠标右键进入 Git Bash Here
- 运行
cd ~/Homestead && vagrant up
,进入 Homestead 目录并启动 Vagrant - 运行
vagrant ssh
,进入 Homestead 虚拟机 - 在虚拟机界面下可以输入
exit
或者Ctrl + D
快捷键退出虚拟机 - 最后运行
vagrant halt
关闭 Homestead
3.第一个应用,运行 Hello World
- 首先开启并进入虚拟机,运行如下代码
> cd ~/Homestead && vagrant up
> vagrant ssh
- 虚拟机启动成功后,通过下面命令来新建一个名为 Laravel 的项目
$ cd ~/Code
$ composer create-project laravel/laravel Laravel --prefer-dist "5.7.*"
建议使用composer create-project
命令来创建 Laravel 项目 - 访问
http://homestead.test
你能看到如下图所示界面,这是 Laravel 为我们生成默认界面。
- 打开 Code 文件夹可以看到刚刚创建的 Laravel 应用,Laravel 默认会为我们生成了一堆文件和文件夹,每一个文件的置放目录和位置都有它的用意
Laravel 文件夹结构简介
文件夹名称 | 简介 |
---|---|
app | 应用程序的业务逻辑代码存放文件夹 |
app/Console | 存放自定义 Artisan 命令文件 |
app/Http/Controllers | 存放控制器文件 |
app/Http/Middleware | 存放「中间件」文件 |
bootstrap | 框架启动与自动加载设置相关的文件 |
composer.json | 应用依赖的扩展包 |
composer.lock | 扩展包列表,确保这个应用的副本使用相同版本的扩展包 |
config | 应用程序的配置文件 |
database | 数据库操作相关文件(数据库迁移和数据填充) |
node_modules | 存放 NPM 依赖模块 |
package.json | 应用所需的 NPM 包配置文件 |
phpunit.xml | 测试工具 PHPUnit 的配置文件 |
public | 前端控制器和资源相关文件(图片、JavaScript、CSS) |
readme.md | 项目介绍说明文件 |
resources | 应用资源 |
resources/js | 未编译的 JavaScript 代码 |
resources/sass | 未编译的 SASS 代码 (将会编译为 CSS ) |
resources/views | 视图文件 |
routes/api.php | 用于定义 API 类型的路由 |
routes/channels.php | 事件转播注册信息 |
routes/console.php | 用于定义 Artisan 命令 |
routes/web.php | 用于定义 Web 类型的路由(重点,大部分情况下本书会用到) |
server.php | 使用 PHP 内置服务器时的 URL 重写 |
storage | 编译后的视图、基于会话、文件缓存和其它框架生成的文件 |
storage/app | 目录可用于存储应用程序使用的任何文件 |
storage/framework | 目录被用于保存框架生成的文件及缓存 |
storage/logs | 应用程序的日志文件 |
tests | 应用测试相关文件 |
vendor | Composer 依赖模块 |
webpack.mix.js | Laravel 的前端工作流配置文件 |
yarn.lock | Yarn 依赖版本锁定文件 |
.gitignore | 被 Git 所忽略的文件 |
.env | 环境变量配置文件 |
- Laravel 在项目创建时会自动为我们生成一个
welcome.blade.php
文件,这个文件将被用于渲染 Laravel 的默认视图。现在,让我们打开该文件,找到相应位置,将Laravel
修改为Hello, World!
,重新打开homestead.test
,会发现页面已被修改。
4. Composer
是一款跨平台的 PHP 依赖管理工具,其创作灵感来源于 Node.js 的 NPM 与 Ruby 的 Bundler。Laravel 使用 Composer 来作为扩展包的管理工具。打开 composer.json
文件,可以看到 Laravel 默认集成了一些为框架提供支持的扩展包,详细内容可前往这篇文章 Composer 入门教程
php代码规范PSR简介
Framework Interoperability Group(框架可互用性小组),简称 FIG,FIG 提出了 PSR-0 到 PSR-4 五套 PHP 非官方规范:
- PSR-0 (Autoloading Standard) 自动加载标准
- PSR-1 (Basic Coding Standard) 基础编码标准
- PSR-2 (Coding Style Guide) 编码风格向导
- PSR-3 (Logger Interface) 日志接口
- PSR-4 (Improved Autoloading) 自动加载优化标准
composer.json
文件中,require
键对应的是应用在 Laravel 所有环境上的扩展包,require-dev
键对应的是应用在 Laravel 开发环境上的扩展包。
在添加扩展包到 composer.json
时,需要为扩展包指定版本号才能进行安装,有以下这三种方式来为扩展包来指定版本范围。
版本范围
"php": "^7.1.3"
:表示安装版本号大于或等于 7.1.3 版本的 PHP。- “laravel/framework”: “5.7.*”:表示安装在 5.7.0 以上,5.8.0 以下的最新 Laravel 框架
- “faker”:"~1.4" :表示安装版本号大于等于 1.4 但小于 2.0 的 faker
常用操作
- 安装项目依赖
根据composer.json
文件,在composer.json
文件所在目录命令行下执行命令composer install
或php composer.phar install
,会产生如下文件
其中,vendor
文件夹存放了项目的依赖库,composer
把安装时确切的版本号列表写入composer.lock
文件用来锁定composer
。
当项目根目录下已经生成composer.lock
文件时,当执行命令composer intsall
时composer
只会下载composer.lock
文件指定的版本,忽略composer.json
文件中的定义 - 更新依赖库
若package.json
进行了修改需要更新依赖库和更新锁文件,可以执行以下命令:
php composer.phar update
或composer update
5. Vim 练级攻略
参考这篇文章 简明 Vim 练级攻略,文章写得很好,指出使用 Vim 的各个使用等级,从低到高慢慢升级的感觉很棒。
四个等级:存活、感觉良好、觉得更好更强更快、使用 Vim 的超能力
等级一:存活
能在vim幸存下来只需要以下的5个命令,你就可以编辑文本了
i
→ Insert 模式,按 `Esc 回到 Normal 模式.x
→ 删当前光标所在的一个字符。:wq
→ 存盘 + 退出 (:w
存盘,:q
退出)dd
→ 删除当前行,并把删除的行存到剪贴板里,相当于剪切p
→ 粘贴剪贴板里的内容
扩展:
h j k l
:强例推荐使用其移动光标,当然你也可以使用光标键 (←↓↑→).
:help <command>
:显示相关命令的帮助。
解释一下何为 Normal 模式:在一般的编辑器下,当你需要 copy 一段文字的时候,你需要使用 Ctrl
键,比如:Ctrl-C
。也就是说,Ctrl
键就好像功能键一样,当你按下了功能键Ctrl
后,C
就不在是 C
了,而且就是一个命令或是一个快键键了,在 Vim 的 Normal 模式下,所有的键都是功能键。
等级二:感觉良好
上面的那些命令只能让你存活下来,现在是时候学习一些更多的命令了。
tips:所有的命令都需要在Normal模式下使用,如果你不知道现在在什么样的模式,你就狂按几次 Esc 键
- 各种插入模式
a → 在光标后插入
o → 在当前行后插入一个新行
O → 在当前行前插入一个新行
cw → 替换从光标所在位置后到一个单词结尾的字符
- 简单的移动光标
0 → 数字零,到行头
^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$ → 到本行行尾
g_ → 到本行最后一个不是blank字符的位置。
/pattern → 搜索 pattern 的字符串(陈皓注:如果搜索出多个匹配,可按n键到下一个)
- 复制/粘贴,注:p/P都可以,p是表示在当前位置之后,P表示在当前位置之前
P → 粘贴
yy → 拷贝当前行当行于 ddP
- Undo/Redo
u → undo
<C-r> → redo
- 打开/保存/退出/改变文件(Buffer)
:e <path/to/file> → 打开一个文件
:w → 存盘
:saveas <path/to/file> → 另存为 <path/to/file>
:x, ZZ 或 :wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
:q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。
:bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(注:可使用:n到下一个文件)
花点时间熟悉一下上面的命令,一旦你掌握他们了,你就几乎可以干其它编辑器都能干的事了。但是到现在为止,你还是觉得使用 Vim 还是有点笨拙,不过没关系,你可以进阶到第三级了。
等级三:觉得更好更强更快
等级四:使用 Vim 的超能力
等级三,四你们自个儿去看我参考的那篇文章,我现在才等级二,后面的先略过
6. Git 与 GitHub
本人参考的这篇文章学习 Git 与 GitHub,在此概括下这篇文章的重要内容,如需Git 官方学习文档的朋友请 点击此处
Git
- 对 Git 进行用户名和邮箱进行设置,为你在代码提交时自动署名标记,方便查看提交日志时区分作者。
$ git config --global user.name "LewisCoder"
$ git config --global user.email [email protected]
–global 选项代表对 Git 进行全局设置。 - 设置 Git 命令 push 的默认模式为 simple,当我们执行
git push
没有指定分支时,自动使用当前分支,而不是报错。
$ git config --global push.default simple
- Git 的基本使用
3.1 对项目目录进行 Git 初始化
$ cd ~/Code/Laravel
$ git init
3.2 将项目所有文件纳入到 Git 中:
$ git add -A
3.3 检查 Git 状态,输出存放在 Git 暂存区的文件,这些文件还未真正提交到 Git 中
$ git status
3.4 保留改动并提交:
$ git commit -m "本次提交描述"
上面这行命令会将暂存区的文件都提交到 Git,-m 选项后面带的参数表示本次提交的简单描述。
3.5 查看历史提交记录
$ git log
3.6 将在暂存区的更改文件进行强制撤销
$ git checkout -f
GitHub
1.将个人 GitHub 与本地主机关联
出于安全考虑,Github 服务器和我们本地的通讯要求使用 SSH Key 来验证,需要在主机中生成过 SSH Key(不知道怎么在主机中生成 SSH Key 的朋友,我反手就是一个链接 SSH Key的生成和使用)将公钥 id_rsa.pub
文件里的内容复制粘贴到个人 GitHub账号的 SSH 令牌管理页面,如下图
2.提交代码到 GitHub
在配置完 GitHub 账号之后,我们便可以开始在上面存放项目代码了。首先 新建一个 GitHub 仓库,取名为 hello_laravel,填上 Description 项目描述,Initialize this repository with a README 这一项无需勾选,因为 Laravel 已默认帮我们创建好了 readme.md 文件。
创建完成之后,使用以下命令将代码上传到 GitHub 上(将 your_username 替换为你自己的 GitHub 用户名):
$ cd ~/Code/Laravel
$ git remote add origin [email protected]:your_username/hello_laravel.git
$ git push -u origin master
至此,项目已成功托管到 GitHub 上。
后面我们如果对本地代码进行了改动,只需运行这 3 条命令即可将代码推送到安全可靠的 GitHub 上:
1、保存到暂存区:
$ git add -A
2、输入描述信息并提交到本地的 Git:
$ git commit -m "Say something"
3、将代码推送到 GitHub:
$ git push
7.Heroku 部署上线
参考的这篇文章 Heroku 部署上线(这篇文章是付费内容)
- 首先注册一个 Heroku 账号,可能需要科学上网
- Homestead 默认帮你安装好了 Heroku 命令行工具集,使用命令
$ heroku login
来登录你的 Heroku 账号 - 添加 SSH Key 到 Heroku 上:
$ heroku keys:add
- 要将应用部署到 Heroku 上,我们还需要在 Laravel 项目下新建一个 Procfile 文件,通过配置该文件来告诉 Heroku 应当使用什么命令来启动 Web 服务器。接着还需要将该文件纳入到 Git 版本控制中:
$ cd ~/Code/Laravel
$ echo web: vendor/bin/heroku-php-apache2 public/ > Procfile
$ git add -A
$ git commit -m "Procfile for Heroku"
- 使用
heroku create
命令在 Heroku 上创建一个新应用:
$ heroku create
Creating mighty-hamlet-1982… done, stack is cedar-14
http://mighty-hamlet-1982.herokuapp.com/ | [email protected]:mighty-hamlet-1982.git
Git remote heroku added
mighty-hamlet-1982 是 Heroku 随机为应用生成的默认名称,每个人生成的名称都不相同。而 http://mighty-hamlet-1982.herokuapp.com/ 则是应用的线上地址
- 声明 buildpack,声明项目语言为 PHP,否则会被误认为为 Node.js
$ heroku buildpacks:set heroku/php
- 设置 APP key
Laravel 使用 App Key 来完成对用户会话及其它信息的编码加密操作,因此我们也需要将 App Key 一同加入到 Heroku 的配置中。
首先,使用 Laravel 自带的 artisan 命令来生成 App Key:
$ php artisan key:generate --show
将生成的 App Key 替换掉下面命令的 <your_app_key> ,并运行该命令行来完成配置:
$ heroku config:set APP_KEY=<your_app_key>
- 部署上线
我们要做的最后一步就是将代码推送和部署到 Heroku 上:
$ git push heroku master
代码推送成功之后,可以使用此命令来快速打开线上应用:
$ heroku open
如果无法在浏览器打开,可根据命令行输出提示中给出的链接直接访问:
▸ Error opening web browser.
▸ Error: Exited with code 3
▸
▸ Manually visit https://mighty-hamlet-1982.herokuapp.com/ in your
▸ browser.
至此,我们便完成了一个 Laravel 应用的部署。