bootstrapping
项目实例: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的路由,没啥好说的
完
相关阅读
强化学习系列(七):n-step Bootstrapping (步步为营)
一、前言 在强化学习系列(五):蒙特卡罗方法(Monte Carlo)和强化学习系列(六):时间差分算法(Temporal-Difference Learning)中,我们介绍了
Bootstrapping从字面意思翻译是拔靴法,从其内容翻译又叫自助法,是一种再抽样的统计方法。自助法的名称来源于英文短语“topullonese