8天学会PHP之day4 框架环境搭建

 

1、框架选择

目前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

 

2、开发环境搭建

Homestead

laravel推荐使用laravel/homestead做为开发环境。laravel

homestead是什么呢?git

官方解释:Laravel Homestead 是一个官方预封装的 Vagrant box ,它为你提供了一个完美的开发环境,你不须要在本地机器安装 PHP、 web 服务器和其余的服务器软件。程序员

那么它的本质就是一个提供开发环境的虚拟机。github

它依赖于Vagrantweb

什么是vagrant?

Vagrant是一种在单个工做流程中构建和管理虚拟机环境的工具。

国内开发者知道Vagrant的并很少,但知道Docker的却很多。在不少状况下,二者的性质差很少。

Vagrant 适合用来管理虚拟机,而docker适合用来管理应用环境。

既然Vagrant是一个构建和管理虚拟环境的工具,那么还须要一个虚拟环境,homestead就是虚拟环境。虚拟环境有须要一个虚拟机,因此还须要选择一个虚拟机软件。vmwarevirtualbox.

这两个软件的用途几乎一致,最根本的区别就是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: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
  - ~/.ssh/id_rsa

folders:
  - map: E:/project3/php/laravel
    to: /home/vagrant/code

sites:
  - map: homestead.test
    to: /home/vagrant/code/Laravel/public

databases:
  - homestead

features:
  - mariadb: false
  - ohmyzsh: false
  - webdriver: false

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

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的默认界面就算是成功了。

 

3、目录结构

根目录下有以下目录:

  • 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一筹。

routes目录下还有一个web.php文件,这里面管理着页面路由。这是最传统的服务端MVC思想,请求直接返回html的作法。在今天大前端横行的时代,咱们都在践行先后端分离,因此这个是用不到的。

 

4、总结

这一章讲了laravel框架的环境搭建和laravel框架模板目录结构的学习。

相关文章
相关标签/搜索