目前PHP主流的框架有4个,Yii、ThinkPHP、laravel和codeigniter。php
PHP框架与其余语言的框架有些不一样。PHP的框架都是一些大而全的大东西。html
不像Java语言,Spring负责依赖注入、SpringMVC负责控制器、Mybatis负责数据库相关、SpringSecurity负责权限相关,各司其职。不过SpringBoot已经逐渐成为一个地基型框架。前端
因为时间有限,我没有选择每一个框架都尝试一下。从各自的官网上面看设计理念,我我的认为Yii算是佼佼者,可是这里要选择学习laravel。mysql
为何?由于laravel在GitHub上面的star数彻底碾压其余三个框架。另外,我比较欣赏laravel的自我介绍:The PHP Framework for Web Artisans,翻译过来就是Web工匠的PHP框架。并且它一再强调本身的语法很优雅。linux
laravel推荐使用laravel/homestead做为开发环境。laravel
homestead是什么呢?git
官方解释:Laravel Homestead 是一个官方预封装的 Vagrant box ,它为你提供了一个完美的开发环境,你不须要在本地机器安装 PHP、 web 服务器和其余的服务器软件。程序员
那么它的本质就是一个提供开发环境的虚拟机。github
它依赖于Vagrant。web
什么是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教程:https://www.liaoxuefeng.com/wiki/896043488029600。至于VirtualBox,彻底不须要教程。多用用就会了。
打开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.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项目的方式有两种。一种是在本地直接建立,一种是进入虚拟机建立。其本质都是同样的。
在虚拟机建立的步骤以下:
执行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框架模板目录结构的学习。