关于define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));的理解
关于define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));的理解
得到网站根目录
对于上面这语句一直不理解是什么意思,查了相关资料有点了结
首先:这个语句由 define(), substr(), dirname()三个函数组成
1. define()
定义和用法 define() 函数定义一个常量。常量类似变量,不同之处在于:
- 在设定以后,常量的值无法更改
- 常量名不需要开头的美元符号 ($)
- 作用域不影响对常量的访问
- 常量值只能是字符串或数字
语法define(name,value,case_insensitive) 参数 描述 name 必需。规定常量的名称。 value 必需。规定常量的值。 case_insensitive
必需。规定常量的名称是否对大小写敏感。
若设置为 true,则对大小写不敏感。默认是 false(大小写敏感)。
注:第三个参数也是今天看了函数原型学到的,define也可以设置大小写的敏感。
2.dirname(path )
定义和用法 path 参数是一个包含有指向一个文件的全路径的字符串。该函数返回去掉文件名后的目录名。
语法string dirname ( string path )
参数
描述
path
必需。规定要检查的路径。
例子<?php
echo dirname("c:/testweb/home.php");
echo dirname("/testweb/home.php");
?>
输出:
c:/testweb
/testweb
3.substr( ) 函数
定义和用法substr() 函数返回字符串的一部分
语法string substr ( string $string , int $start [, int $length ] )
参数
描述 string 必需。规定要返回其中一部分的字符串。 start
必需。规定在字符串的何处开始。
- 正数 - 在字符串的指定位置开始
- 负数 - 在从字符串结尾的指定位置开始
- 0 - 在字符串中的第一个字符处开始
charlist
可选。规定要返回的字符串长度。默认是直到字符串的结尾。
- 正数 - 从 start 参数所在的位置返回
- 负数 - 从字符串末端返回
注释:如果 start 是负数且 length 小于等于 start,则length为 0
4.__FILE__
__FILE__的路径是当前代码所在文件(而不是url所在 文件)完整路径,所以定义配置文件通常要放在根目录下定义网站的根地址
define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));
假设 __FILE__为 /home/web/include/common.php
因此
dirname(__FILE__)的返回值就是/home/web/include
substr(dirname(__FILE__), 0, -7))的返回值就是/home/web/
define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));
就是定义常理DISCUZ_ROOT的值为/home/web/
为什么是-7呢???
对,因为他们都恰好在include文件夹内,数数字母个数,恰好是7个...
这样定义的常量正好就是根目录的绝对地址了....
关于define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));的理解的更多相关文章
- substr(dirname(__FILE__))
这是discuz中定义论坛安装根目录的一个常量.现在我们就来分析一下这个很简单但是非常实用的常量. define('DISCUZ_ROOT', substr(dirname(__FILE__) ...
- PHP获取文件目录dirname(__FILE__),getcwd()
以discuz x2.5为例 D:/www/upload2.5/test.php D:/www/upload2.5/source/class/class_test.php test.php文件如下 & ...
- PHP中define()和dirname(__FILE__)
1,define() 函数定义一个常量.常量类似变量,不同之处在于: (1)在设定以后,常量的值无法更改 (2)常量名不需要开头的美元符号 ($) (3)作用域不影响对常量的访问 (4)常量值只能是字 ...
- time()函数,dirname(__FILE__) 的使用总结
time()函数将返回从1970-1-1 0:0:0到当前时间的秒数.(整型) dirname(__FILE__) php中定义了一个很有用的常数,即 __file__ 这个内定常数是当前php程序的 ...
- PHP 常量dirname(__file__)
PHP 常量dirname(__FILE__)取得当前文件的绝对路径. define('ROOT_PATH', str_replace('includes/2.php', '', str_replac ...
- os.path.dirname(__file__)使用
os.path.dirname(__file__)使用 该测试脚本所在的位置:D:\第1层\第2层\第3层\第4层\第5层\test11.py test11.py import os #该文件所在位置 ...
- os.path.dirname(__file__)
os.path.dirname(__file__) 返回脚本的路径 描述: 必须实际存在的.py文件,如果直接在命令行执行,则会引发异常NameError: name 'file' is not de ...
- PHP获取绝对路径dirname(__FILE__)和__DIR__比较
我们都知道,要获取当前PHP脚本所在目录的绝对路径,dirname(__FILE__) 和 __DIR__都可以实现.那么什么情况下用 dirname(__FILE__),什么情况下用 __DIR__ ...
- getcwd()和dirname(__FILE__)的区别
我个人理解:getcwd()会随着包含文件的改变而改变,而dirname(__FILE__)不会.即 getcwd() 表示获取当前执行文件的物理路径. 如 getcwd()显示: /www/proj ...
随机推荐
- vue-cli2 和vue-cli3
vue-cli2 和vue-cli3 https://www.cnblogs.com/zhanvo/p/10963776.html <!DOCTYPE html> <html lan ...
- 使用超声波传感器HC-SR04检测障碍物
HC-SR04是一种常用的超声波传感器,能够探测2-300厘米范围内的障碍物. 传感器看起来像一个小PCB,前面有两个金属圆柱,背面有一个小电路. 在本文中,我们将提供一个简单的演示来使用HC-SR0 ...
- 牛客练习赛6 C 手铐
手铐 思路: 缩环+树形dp 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include& ...
- python_面向对象——多态
1.同一接口,多种形态 class Document: def __init__(self,name): self.name = name def show(self): # 异常处理:提示子类必须把 ...
- LG3690 【模板】Link Cut Tree 和 SDOI2008 洞穴勘测
UPD:更新了写法. [模板]Link Cut Tree 给定n个点以及每个点的权值,要你处理接下来的m个操作.操作有4种.操作从0到3编号.点从1到n编号. 后接两个整数(x,y),代表询问从x到y ...
- js onclick事件传参
传字符串参数 var html = "<a href='#' onclick='onedit(""+ row.name + "")';>编 ...
- 006——转载-MATLAB数字与字符之间的转换
(一)参考文献:https://jingyan.baidu.com/article/5bbb5a1bd8dcb113eba1799d.html (二)数字转换成字符串 第一步在我们的电脑上打开matl ...
- 004_硬件基础电路_AD各层含义
- 学到了林海峰,武沛齐讲的Day19 迭代细讲
在家加1个月学了8day的课 出差6天看了8day的课..说明再忙也是可以挤挤多学习的. 广州出差最后两天没学习.一天做车,一天做公司的事...4天就过去了. 老师讲的包子和鸡蛋需求不好...讲的有 ...
- 40 | insert语句的锁为什么这么多?
在上一篇文章中,我提到 MySQL 对自增主键锁做了优化,尽量在申请到自增 id 以后,就释放自增锁. 因此,insert 语句是一个很轻量的操作.不过,这个结论对于“普通的 insert 语句”才有 ...