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 相关文章推荐
我的论坛源代码(五)
Oct 09 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
php下载文件的代码示例
Jun 29 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
PHP机器学习库php-ml的简单测试和使用方法
Jul 14 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
简单的移动设备检测PHP脚本代码
2011/02/19 PHP
PHP学习之整理字符串
2011/04/17 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
项目实践之javascript技巧
2007/12/06 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
仓库保管员岗位职责
2013/12/20 职场文书
擅自离岗检讨书
2014/02/11 职场文书
内勤岗位职责范本
2015/04/13 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
go xorm框架的使用
2021/05/22 Golang
Python 实现Mac 屏幕截图详解
2021/10/05 Python