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 smarty函数扩展
Mar 15 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
两款万能的php分页类
Nov 12 PHP
基于PHP技术开发客服工单系统
Jan 06 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
详解PHP归并排序的实现
Oct 18 PHP
php技巧小结【推荐】
Jan 19 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
数据库查询记录php 多行多列显示
2009/08/15 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
javascript轮播图算法
2016/10/21 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
Python MD5加密实例详解
2017/08/02 Python
python随机数分布random测试
2018/08/27 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
责任担保书范文
2014/05/21 职场文书
新教师培训心得体会
2014/09/02 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
python opencv旋转图片的使用方法
2021/06/04 Python