BootStrapping

版权声明:欢迎提问:[email protected] https://blog.csdn.net/include_heqile/article/details/89787604

项目实例:https://github.com/Binpress/php-bootstrapping-crash-course

因为有路由的存在,因此我们需要设置虚拟主机,直接将我们的项目的public目录设置为虚拟主机的DocumentRoot,但是更改apache的httpd.conf和httpd-vhosts.conf太麻烦了,我们可以直接使用php的内置服务器来启动一个虚拟主机:

sudo php -S 0.0.0.0:8080 -t php-bootstrapping-crash-course/app/public php-bootstrapping-crash-course/app/public/index.php

分别指定网站根目录和默认页面(index.php)

正文开始

啥是bootstrapping,它是指加载程序操作环境的过程,对于PHP而言,bootstrapping允许所有的请求通过一个文件来进行处理,通常是index.php,在Symfony框架中,是app.php,这中文件被称作front controller

我们为什么要使用bootstrapping,如果我们的PHP脚本可以直接被用户访问,那么当我们的PHP引擎崩溃时,我们的PHP脚本就会直接以明文的形式显示出来,这样对程序的安全性会造成很大的隐患,引进了bootstrapping之后,所有的处理业务逻辑的PHP脚本都是放在DocumentRoot目录之外的,也就是说不能通过web服务器直接访问,客户只能访问前端控制器(front controller),这时也就产生了路由,对于不同的请求URL,匹配到对应的PHP脚本来进行处理,可以看到,现代的大部分MVC程序都是这样做的,几乎都使用了路由

看一个目录结构:

/path/to/myapp/
  app/
    bootstrap.php
    lib/
    public/
      .htaccess
      index.php
  share/
  vendor/

这里面,我们设置WenServer的VirtualHost的时候,配置文件是这样写的:

DocumentRoot /path/to/myapp/app/public
<Directory "/path/to/myapp/app/public">
  # other setting here
</Directory>

可以看到,只有public目录是可以直接被访问的,而且我们的.htaccess文件会把所有不存在的url导向到index.php文件,由index.php负责处理URL的路由

app/lib文件夹中存放着我们的应用程序的实际逻辑代码(我们自己编写的),vender文件夹中存放的是第三方代码(封装好的库)

bootstrap.php文件负责加载我们的环境

加载组件

我们可以使用autoload.php来自动加载依赖,我们创建composer.json,然后在该目录下运行composer update,composer就会自动根据我们编写的composer.json中的清单来下载我们所需的文件

路由,就是slim的路由,没啥好说的

猜你喜欢

转载自blog.csdn.net/include_heqile/article/details/89787604
今日推荐