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 相关文章推荐
php中引用符号(&amp;)的使用详解
Nov 13 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
php获取域名的google收录示例
Mar 24 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
Yii配置文件用法详解
Dec 04 PHP
php使用正则表达式进行字符串搜索的方法
Mar 23 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
PHP7.0版本备注
Jul 23 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 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
将数组写入txt文件 var_export
2009/04/21 PHP
提高php编程效率技巧
2015/08/13 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
javascript计算对象长度的方法
2017/10/25 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
Python使用MD5加密字符串示例
2014/08/22 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
营销与策划个人求职信
2013/09/22 职场文书
写给女生的道歉信
2014/01/14 职场文书
入股协议书
2014/04/14 职场文书
公司节能减排倡议书
2014/05/14 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
无罪辩护词范文
2015/05/21 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
python实现三阶魔方还原的示例代码
2021/04/28 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript