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
9个PHP开发常用功能函数小结
Jul 15 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
php二维数组转成字符串示例
Feb 17 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
php接口实现拖拽排序功能
Apr 23 PHP
php高清晰度无损图片压缩功能的实现代码
Dec 09 PHP
asp.net和php的区别点总结
Oct 10 PHP
laravel框架查询数据集转为数组的两种方法
Oct 10 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
七款最流行的PHP本地服务器分享
2013/02/19 PHP
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
axios学习教程全攻略
2017/03/26 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
成考报名单位证明范本
2014/01/16 职场文书
外贸专业求职信
2014/03/09 职场文书
党员服务承诺书
2014/05/28 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
庆祝国庆节标语
2014/10/09 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang