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做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
php中动态修改ini配置
Oct 14 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
CodeIgniter配置之database.php用法实例分析
Jan 20 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
PHP session会话操作技巧小结
Sep 27 PHP
php array_key_exists() 与 isset() 的区别
Oct 24 PHP
php 开发中加密的几种方法总结
Mar 22 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
使用Sphinx对索引进行搜索
2013/06/25 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
小程序云函数调用API接口的方法
2019/05/17 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
内科护士实习自我鉴定
2013/10/17 职场文书
六十岁生日答谢词
2014/01/10 职场文书
新书吧创业计划书
2014/01/31 职场文书
保密普查工作实施方案
2014/02/25 职场文书
《桥》教学反思
2014/04/09 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL