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

简介: 【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获取项目根目录的一个完整过程


相关文章
|
8月前
|
前端开发 测试技术
测Nuxt.js入坑,配置dev、test、pro三种环境的变量env
先下载一个cross-env模块,比较好控制环境
269 5
|
8月前
|
JavaScript
用户安装nodejs设置路径打包项目
用户安装nodejs设置路径打包项目
101 1
|
XML 消息中间件 小程序
tp项目常用工具,composer
tp项目常用工具,composer
155 0
|
PHP
tp5源码解析--自动加载类
在TP5的框架使用过程中,自动加载类是可能会接触到,上手不难,但若想随心所欲的用,还是需要了解一番。用了千次,却没看过一次源码,学习源码,起码对TP5这个框架使用更加得心应手,毕竟技术服务于业务,能够写出更简介、更方便、更有效的业务代码,本身就是一件身心愉悦的事儿;
138 0
|
存储 域名解析 前端开发
如何部署前端dist目录?
如何部署前端dist目录?
如何部署前端dist目录?
|
编译器
VC6工程目录下的文件说明
VC6工程目录下的文件说明
158 0
html+css实战176-项目目录
html+css实战176-项目目录
116 0
html+css实战176-项目目录
【TP5.1】项目结构(项目应该怎么搭建)
【TP5.1】项目结构(项目应该怎么搭建)
142 0
【TP5.1】项目结构(项目应该怎么搭建)
|
PHP
【TP5】安装Guzzle并简单使用
【TP5】安装Guzzle并简单使用
749 0
【TP5】安装Guzzle并简单使用
【TP5.1】目录结构的调整
【TP5.1】目录结构的调整
90 0
【TP5.1】目录结构的调整

热门文章

最新文章