学习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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
php mysql数据库操作分页类
Jun 04 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
php解析json数据实例
Aug 19 PHP
php类的扩展和继承用法实例
Jun 20 PHP
php微信开发接入
Aug 27 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 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+mysql扎实个人基本功
2008/03/27 PHP
浅析php原型模式
2014/11/25 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
img的onload的另类用法
2008/01/10 Javascript
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
React Router基础使用
2017/01/17 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
市场部管理制度
2014/02/02 职场文书
护士自我鉴定总结
2014/03/24 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
董存瑞观后感
2015/06/11 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis