学习discuz php 引入文件的方法DISCUZ_ROOT


Posted in PHP onJune 21, 2009

define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));
这是discuz中定义论坛安装根目录的一个常量。现在我们就来分析一下这个很简单但是非常实用的常量。
先说明一下本篇文章中假定common.inc.php文件的绝对路径就是F:\webroot\bbs\include\common.inc.php
这句话包含在discuz的 include/common.inc.php 里面,首先我们来看看DISCUZ_ROOT这个常量的值:F:\webroot\bbs\
接下来我们具体分析这句话:
define(),当然是定义一个常量了,这里呢就是定义一个名字是DISCUZ_ROOT的常量。
substr(),这个是字符串截取函数,substr(‘123456789', 0, -2)这句话就是返回1234567。
dirname(__FILE__) ,__FILE__是一个魔术常量,手册上是这么说的“文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。 ”。dirname(),返回路径中的目录部分。这么看来dirname(__FILE__),就是获取的F:\webroot\bbs\include着一串字符串。

由此可见define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7)); 就是F:\webroot\bbs\include这个字符串减去末尾7个字母的字符串:F:\webroot\bbs\
假如include文件夹改成lib那么-7就应该改成是-3,不知道你明白了没有?

以后在程序中引用文件的时候就可以这么写了require_once DISCUZ_ROOT . './test.php'; 这句话的实际内容就是require_once F:\webroot\bbs\./test.php

PHP 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
PHP数据过滤的方法
Oct 30 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
PHP简单实现正则匹配省市区的方法
Apr 13 PHP
php对微信支付回调处理的方法
Aug 23 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
Laravel find in set排序实例
Oct 09 PHP
php 分页函数multi() discuz
Jun 21 #PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 #PHP
discuz7 phpMysql操作类
Jun 21 #PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 21 #PHP
ie6 动态缩略图不显示的原因
Jun 21 #PHP
PHP COOKIE设置为浏览器进程
Jun 21 #PHP
PHP 输出缓存详解
Jun 20 #PHP
You might like
PHP取进制余数函数代码
2012/01/19 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
解决vue attr取不到属性值的问题
2018/09/18 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
Python中的hypot()方法使用简介
2015/05/18 Python
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
Python实现注册、登录小程序功能
2018/09/21 Python
python中对数据进行各种排序的方法
2019/07/02 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
vue常用指令代码实例总结
2020/03/16 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
人力资源主管职责范本
2014/03/05 职场文书
经典婚礼主持词
2014/03/13 职场文书
历史博物馆观后感
2015/06/05 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
python实战之用emoji表情生成文字
2021/05/08 Python