上次我们知道base.php最后的时候点用了Loader类并使用了里面的方法,所以今天我们从这里开始。如下图所示:
看到这几个关键字想必大家都名了跟什么东西有关系了,那就是composer,下面我们一起来看看这个东西是如何实现的 把composer安装后的东西直接自动载入到项目中来使用的。
首先我先理一下关系图,框架先是从index.php执行起,再到start.php,再到base.php,而base.php定义了框架所需常量 自动载入错误注册和惯例配置。像下面这样子:
接着我们从环境变量讲起,如下图:
A:这里PHP_SAPI是PHP内置常量,返回描述 PHP 所使用的接口类型(theServerAPI, SAPI)的小写字符串。例如,CLI 的 PHP 下这个字符串会是 "cli",Apache下可能会 有几个不同的值,取决于具体使用的SAPI。
B:通过三元运算取巧 如果等式sapi的返回结果是cli那么为返回true,不为只返回false
C:当define参数第二个为true时定义常量 否则不定义,并返回相应的布尔类型值,也就是 true或者false。
D:PHP_OS检查运行环境。
C:strpos — 查找字符串首次出现的位置(也就是win这个字符串出现的位置)
E:这个!==false就很关键了 如果搭建在这里没逗号的情况下直接写成true是会报错的,但 是还有另一个用途那就是让常量返回布尔类型的值而非 int(0)这个样的字符。
下面这里的代码是为了验证我猜测作者的当时的想法,如下:
//define('IS_WIN', strpos(PHP_OS, 'WIN') true);
//define('IS_WIN', strpos(PHP_OS, 'WIN') ,true);
define('IS_WIN', strpos(PHP_OS, 'WIN') !==false);
var_dump(IS_WIN);
每一行代码的输出结果都不一样,大家可以尝试动手输出试试。下面我们接着往下,该到这个载入Load