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

 

一、框架选择

目前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就是虚拟环境。虚拟环境有需要一个虚拟机,所以还需要选择一个虚拟机软件。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项目的方式有两种。一种是在本地直接创建,一种是进入虚拟机创建。其本质都是一样的。

在虚拟机创建的步骤如下:

执行vanrant 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的路由是和控制器放在一起的。这是老一代服务端的作风。

laravel的做法是要比Spring优雅很多的,它和主流的前端思想很吻合。将路由和控制器分离开来了。由路由跳转到控制器。

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

猜你喜欢

转载自www.cnblogs.com/luzhenqian/p/11427220.html