【TP5源码】获取项目的根目录

实现代码

<?php
namespace app\index\controller;

class Index
{
    # 获取应用根目录
    public function index()
    {
        # 这里是判断命令行执行,还是浏览器执行
        if ('cli' == PHP_SAPI) {
            $scriptName = realpath($_SERVER['argv'][0]);
        } else {
            # 获取文件的绝对路径
            $scriptName = $_SERVER['SCRIPT_FILENAME'];
        }
        # dirname是获取目录,reapath返回绝对路径
        $path = realpath(dirname($scriptName));
        # 检测是不是文件
        if (!is_file($path . DIRECTORY_SEPARATOR . 'think')) {
            $path = dirname($path);
        }
        return $path . DIRECTORY_SEPARATOR;
    }
}

步骤详解

(1)分析    if ('cli' == PHP_SAPI) {

先来看这一行代码,这里有个常量是PHP_SAPI,然后进行打印出来是cgi-fcgi,所以会走else

这里会有三种情况:

nginx访问是fast-cgi

apache访问是apache2handler

命令行访问是cli

(2)执行$scriptName = $_SERVER['SCRIPT_FILENAME'];

$_SERVER['SCRIPT_FILENAME']是访问的是哪个文件,它就获取这个文件的绝对路径

打印出来的是:

C:/phpStudy/PHPTutorial/WWW/tp5.1learn/public/index.php

(3)执行$path = realpath(dirname($scriptName));

这行进行了两个操作:

dirname()函数返回路径中的目录部分。

realpath() 函数返回绝对路径。

打印结果:

dirname($scriptName):C:/phpStudy/PHPTutorial/WWW/tp5.1learn/public

realpath(dirname($scriptName)):C:\phpStudy\PHPTutorial\WWW\tp5.1learn\public

(4)执行is_file($path . DIRECTORY_SEPARATOR . 'think',

打印结果:C:\phpStudy\PHPTutorial\WWW\tp5.1learn\public\think

这一步不会执行,因为在public的目录下没有think这个目录

这里需要注意一个点就是define ('DIRECTORY_SEPARATOR', "/"),在PHP这个是定义斜杠的常量

(5)执行$path . DIRECTORY_SEPARATOR;

执行结果:C:\phpStudy\PHPTutorial\WWW\tp5.1learn\

(6)完结:这个也就是tp5.1获取项目根目录的一个完整过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咔咔-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值