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
cache_lite试用
Feb 14 PHP
php PDO中文乱码解决办法
Jul 20 PHP
PHP设计模式之装饰者模式
Feb 29 PHP
php字符串分割函数explode的实例代码
Feb 07 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
yii操作cookie实例简介
Jul 09 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
浅析PHP文件下载原理
Dec 25 PHP
PHP Reflection API详解
May 12 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 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脚本的10个技巧(2)
2006/10/09 PHP
初识php MVC
2014/09/10 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
PHP如何防止SQL注入
2014/05/03 面试题
网络工程师自荐书范文
2014/04/01 职场文书
市场营销专业求职信
2014/06/17 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
房屋出售授权委托书
2014/10/12 职场文书
期末个人总结范文
2015/02/13 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
企业安全生产规章制度
2015/08/06 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
Python List remove()实例用法详解
2021/08/02 Python