PHP中set_include_path()函数相关用法分析


Posted in PHP onJuly 18, 2016

本文实例讲述了PHP中set_include_path()函数相关用法。分享给大家供大家参考,具体如下:

先看如下代码:

<?php
/** 定义根目录 */
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));
/** 定义插件目录(相对路径) */
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');
/** 设置包含路径 */
@set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);
?>

首先:

我们来看这个全局变量:__FILE__

它表示文件的完整路径(当然包括文件名在内)

也就是说它根据你文件所在的目录不同,有着不同的值;当然,当它用在包行文件中的时候,它的值是包含的路径;

然后:

我们看这个函数:

string dirname ( string path )

它是PHP内置函数,它的作用是什么呢,就是返回除了本文件名以外的所在目录,例如:

假如你的首页中用到了_FILE_这个变量:

(假设你的网页所在目录为:http://localhost/web/index.php),那么:
_FILE_的值为http://localhost/web/index.php(一个绝对路径)。而此时dirname (_FILE_)表示的就是http://localhost/web/也就是没有index.php这个文件名。

而dirname(dirname(_FILE_))表示的就是上一级的目录,以此类推;

最后:

看一下define()这个函数,其实他就是一个定义常量的函数,比如:define('MEN','ooooo');

那么你后你就可以用MEN来表示ooooo这个字符串;

那么这么写有什么好处呢,那就是当你需要修改变量的时候,你只要修改它就行了,相当的方便,尤其是像路径这样的字符串!

下面解释一下这段代码:

define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

就是定义__TYPECHO_ROOT_DIR__为这个文件所在的目录,像这种定义一般是放在config.inc.php中的,那么获取的目录也就是config.inc.php所在的目录;也就是根目录!

define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');

这就不用说了!

至于set_include_path(get_include_path() . PATH_SEPARATOR . $path);是什么意思,他就是包含路径;

比如你有一个文件夹:命名为include,里面有数据库连接文件:conn.php……,

你这样设置:

set_include_path("/include")

那么以后你就直接可以在其他页面中使用

include("conn.php")

这不是经常见到吗?它参数就字符串,当然你也可以设置多个路径,中间用;分开,而那句:

set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);

什意思呢,举个例子:

你的一个页面有这样的语句:

include('/inc/sql.php');
include('/inc/conn.php');

而你突然发现我把这些要包含的文件放在inc目录下不安全,怎么办,要改,我想放到include目录中,好的,这么多页面不累死才怪:有没有好的方法!有!!!!!!!

在config.inc.php中写着么一句:

set_include_path(get_include_path() .'/include')

就这么简单,对,就这么简单!动态的修改!

你不要看这个:get_include_path() . PATH_SEPARATOR . $path这是什么,他就一路径字符串,中间的.是字符串连接符号,也就是刚才定义的那些常量的组合,组合成一字符串,也好就是说他可以动态的设置包含路径!如果正确返回包含路径,不正确返回false;

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
神盾加密解密教程(一)PHP变量可用字符
May 28 PHP
分享php邮件管理器源码
Jan 06 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
php新建文件的方法实例
Sep 26 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 #PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 #PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 #PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 #PHP
Yii2中DropDownList简单用法示例
Jul 18 #PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 #PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 #PHP
You might like
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
jQuery操作cookie
2016/08/08 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
详解Angular4 路由设置相关
2017/08/26 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
python实现词法分析器
2019/01/31 Python
python如何实现数据的线性拟合
2019/07/19 Python
详解python中docx库的安装过程
2019/11/08 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
教师自我评价范例
2013/09/24 职场文书
初中学生期末评语
2014/04/24 职场文书
2014年护理部工作总结
2014/11/14 职场文书
庆祝教师节主持词
2015/07/06 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
八年级数学教学反思
2016/02/17 职场文书
Java使用jmeter进行压力测试
2021/07/09 Java/Android
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技