一、框架选择
目前PHP主流的框架有4个,Yii、ThinkPHP、laravel和codeigniter。
PHP框架与其他语言的框架有些不同。PHP的框架都是一些大而全的大东西。
不像Java语言,Spring负责依赖注入、SpringMVC负责控制器、Mybatis负责数据库相关、SpringSecurity负责权限相关,各司其职。不过SpringBoot已经逐渐成为一个地基型框架。
由于时间有限,我没有选择每个框架都尝试一下。从各自的官网上面看设计理念,我个人认为Yii算是佼佼者,但是这里要选择学习laravel。
为什么?因为laravel在GitHub上面的star数完全碾压其他三个框架。另外,我比较欣赏laravel的自我介绍:The PHP Framework for Web Artisans,翻译过来就是Web工匠的PHP框架。而且它一再强调自己的语法很优雅。
二、开发环境搭建
Homestead
laravel推荐使用laravel/homestead作为开发环境。
homestead是什么呢?
官方解释:Laravel Homestead 是一个官方预封装的 Vagrant box ,它为你提供了一个完美的开发环境,你不需要在本地机器安装 PHP、 web 服务器和其他的服务器软件。
那么它的本质就是一个提供开发环境的虚拟机。
它依赖于Vagrant。
什么是vagrant?
Vagrant是一种在单个工作流程中构建和管理虚拟机环境的工具。
国内开发者知道Vagrant的并不多,但知道Docker的却不少。在很多情况下,两者的性质差不多。
Vagrant 适合用来管理虚拟机,而docker适合用来管理应用环境。
既然Vagrant是一个构建和管理虚拟环境的工具,那么还需要一个虚拟环境,homestead就是虚拟环境。虚拟环境有需要一个虚拟机,所以还需要选择一个虚拟机软件。vmware或virtualbox.
这两个软件的用途几乎一致,最根本的区别就是vmware收费,virtualbox免费。
vmware稳定,性能强,功能多,但体积更庞大。virtualbox更小巧一些。
我从16年使用vmware至今有接近4年了,但从今年开始我不再使用vmware,反而转向virtualbox。原因有两点,你可以参考一下:
1.之前我习惯使用虚拟机环境开发,这样可以隔离开本机环境和开发环境。不过后来我发现我使用电脑时几乎无时无刻不在开发。就把本机环境和开发环境合起来用了。
2.费用问题,vmware收费太贵了。
现在使用virtualbox,主要是在centos上面测试一些软件。
那么针对框架开发环境的场景,我更推荐使用virtualbox。
由于我们是使用shell的方式访问虚拟环境,所以还需要有一个shell工具。官方推荐使用git bash。
最后总结一下,安装Homestead需要以下几个软件:
-
git bash(其实这一项非必需)
-
Hyper-V(虚拟机依赖的软件,一般的主流电脑都会有,没有的话去微软官网安装)
-
VMware或者Virtual Box
-
Vagrant
安装这个环境会很繁琐,甚至有些学习PHP的同学会在安装环境这一步骤上花费数天时间。
既然这么麻烦,为什么还要使用Homestead呢?我们第0天搭建的开发环境不好吗?下面是官方的理由(解释):
https://learnku.com/articles/4668/why-do-you-have-to-use-homestead-to-develop-laravel-applications
官方的说法里,Homestead可以解决掉很多麻烦,虽然Homestead本身也很麻烦。
安装Git和VirtualBox
这两个软件安装和使用都比较简单。这里就不再赘述。
以后可能会写相关的文章。
这里推荐廖雪峰老师的git教程:https://www.liaoxuefeng.com/wiki/896043488029600。至于VirtualBox,完全不需要教程。多用用就会了。
安装Homestead
打开git bash,输入命令:
vagrant box add laravel/homestead
这条命令的作用是安装最新版本的homestead。
但是国内网络下载速度很慢,我尝试了几次才下载下来。你也可以多试几次。
除了命令安装外,还可以将box文件下载到本地再进行安装。但这样可能会出现其它问题。我不推荐这种方式安装。
安装之后使用vagrant box list
来查看是否安装成功。
克隆下来homestead的目录。
git clone https://github.com/laravel/homestead.git
下载后会在当前目录看到Homestead文件夹。
Homestead文件夹根目录下有一个init.sh文件,执行它。
bash init.sh
完成以上步骤,并且过程中没有出现错误提示,就证明没有问题。
接下来,进入Homestead配置环节。
配置Homestead
Homestead根目录下有一个Homestead.yaml文件,里面放着Homestead的主要配置。
内容大致如下:
---
ip
authorize和keys选项是git的公钥配置,填写正常的文件位置即可。
folders选项下的map代表我们真实主机中的要映射的目录,to表示Homestead虚拟机中被映射的目录。
上面的配置,就是将本机的E:/project3/php/laravel
映射到/home/vagrant/code
.
看到这里你应该很清楚了,Homestead就是一个linux虚拟机。
sites选项代表网址映射,map表示要在浏览器中输入的地址,to表示虚拟机中被映射的文件目录。
修改了sites的话,还要修改hosts文件。
windows的hosts文件在C:\Windows\System32\drivers\etc\
下。
如果你不想修改hosts文件,也可以的。那么你就需要在浏览器中输入ip地址,比如上面的配置中,在浏览器输入192.168.10.10
也是一样的。
databases选项代表的是数据库。默认的mysql数据库用户名是homestead,密码是secret
将homestead.yaml文件配置好之后,在homestead文件夹根目录打开git bash,执行vagrant up
命令启动vagrant虚拟机。
如果整个过程没有出现问题的话,开发环境就算搭建好了。
创建laravel项目
做到这一步,终于可以创建laravel项目了。
创建laravel项目的方式有两种。一种是在本地直接创建,一种是进入虚拟机创建。其本质都是一样的。
在虚拟机创建的步骤如下:
执行vagrant ssh
登陆虚拟机。
切换到映射的目录下,执行composer create-project laravel/laravel Laravel --prefer-dist
命令,创建一个名为 Laravel 的laravel项目。
在浏览器中输入http://192.168.10.10/或者输入你配置的映射网址,看到Laravel的默认界面就算是成功了。
三、目录结构
根目录下有如下目录:
-
app
目录包含应用程序的核心代码。 -
bootstrap
目录包含引导框架的app.php
文件。 -
config
目录,顾名思义,包含应用程序所有的配置文件。 -
database
目录包含数据填充和迁移文件以及模型工厂类。 -
public
目录包含了入口文件index.php
,它是进入应用程序的所有请求的入口点。 -
resources
目录包含了视图和未编译的资源文件(如 LESS、SASS 或 JavaScript)。 -
routes
目录包含了应用的所有路由定义。 -
storage
目录包含编译后的 Blade 模板、session 会话生成的文件、缓存文件以及框架生成的其他文件。 -
tests
目录包含自动化测试文件。 -
vendor
目录包含所有的 Composer 依赖包。
我们的代码几乎都放在app目录下,所以主要看一下app目录。
控制器和中间件
我们要做的是一个RESTful风格的API服务,那么app目录下对我们来说最重要的目录是Http目录。
Http目录下只有Controller和Middleware两个文件夹和一个Kernel.php文件。
Controller文件夹是控制器,Middleware是中间件。Kernel是用来管理中间件的。
控制器的概念,大家应该都理解,不多说了。
中间件的概念,Java程序员可能没什么印象,你可以先理解成过滤器。
作为一个MVC服务框架,这几乎就是核心的全部了。
路由
另外,我们还需要注意一个文件,在根目录下的/routes/api.php
。这个文件是用来管理路由的。
用过Spring框架的同学应该知道,Spring的路由是和控制器放在一起的,通过给类和方法写注解来标记路由。也就是说在Spring中,路由就是控制器的概念,它们是紧密连接在一起的,这是老一代服务端的作风。
laravel的做法是要比Spring优雅很多的,它和目前主流的前端思想很吻合。将路由和控制器分离开来了。由路由跳转到控制器。
这在应用中没有任何区别,但在写法上,laravel确实更胜spring一筹。
四、总结
这一章讲了laravel框架的环境搭建和laravel框架模板目录结构的学习。