通过__DIR__和 getcwd()的不同之处来剖析像ThinkPHP等单一入口文件类框架模式
__DIR__,PHP5.3的全局预定义常量,为当前文件的所在目录的绝对路径形式的表示,类似的还有__FILE__,为访问本文件的绝对路径。
getcwd()为get current working directory,即当前执行的脚本的目录位置,何为当前执行的脚本。
index.php
<?php require_once(‘lib/init.php‘); ?>
lib/ init.php
<?php echo __DIR__; echo ‘<br/>‘ echo getcwd(); ?>
结果会是:
/xxx/xxx/lib init.php所在的目录
/xxx/xxx index.php所在的目录
__DIR__和其所在的文件有直接关系,getcwd()则与当前所执行的脚本存在直接联系,虽然getcwd()是在lib/init.php中但其被执行时是通过index.php引入执行的,即一直都是index.php为当前的活动脚本,其所处的目录为活动目录。
其实还有个很好的验证的方法,比如Thinkphp的单一入口模式,index.php承载了各种请求的入口,说白了你的所有请求都是被此入口脚本去做引入框架进行响应的,所以,当前活动目录肯定是此入口文件所在的目录,你可以在其下的任何一个控制器里输出__DIR__和getcwd(),你会发现__DIR__是此控制器脚本文件的目录位置,而getcwd()则是此入口文件所在的目录
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。