首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >set_include_path(get_include_path()PATH_SEPARATOR。‘'phpseclib');

set_include_path(get_include_path()PATH_SEPARATOR。‘'phpseclib');
EN

Stack Overflow用户
提问于 2013-01-12 16:08:41
回答 4查看 23.9K关注 0票数 12

我偶然发现了两个我从未在php中使用过的函数。

代码语言:javascript
复制
set_include_path();
get_include_path();

目前,我希望将phpseclib实现到我正在处理的项目上。因为我需要使用SSH2的SFTP类扩展,这反过来又需要MathBigInteger类。等。

手册上提到了set_include_path()

“为脚本的持续时间设置include_path配置选项。”

这对我的框架的其余部分意味着什么,它会设置来自'phpseclib‘dir的所有包含路径吗?

而且,我真的不明白:

代码语言:javascript
复制
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

我将phpseclib存储在文件系统中的自定义库目录中,get_include_path()在我的文件系统中如何神奇地找到phpseclib目录?

如你所见,我在这里完全迷路了。有谁能帮我理清一下吗?

PS/ I只需要在应用程序中的一个分区点使用这个库,因此只希望在需要时包含它,目前我希望将它包含在我的模型类的子类中。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-12 16:32:32

首先,您需要了解include_path配置设置的功能:

指定请求、包含、fopen()、file()、readfile()和file_get_contents()函数查找文件的目录列表。格式类似于系统的PATH环境变量:在Unix中用冒号分隔的目录列表,在Windows中用分号分隔的目录列表。 PHP在查找要包含的文件时分别考虑包含路径中的每个条目。它将检查第一条路径,如果找不到,就检查下一条路径,直到它找到包含的文件,或者带警告或错误返回。您可以在运行时使用set_include_path()修改或设置包含路径。

构造

代码语言:javascript
复制
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

在请求时将phpseclib追加到搜索的目录列表中,包括具有上述函数之一的文件。

由于phpseclib是一个相对路径,其效果与您指定的./phpseclib相同,也就是说,PHP将查看进程当前目录中名为phpseclib的子目录。它并不能神奇地确定库在文件系统中的位置;您的工作是将它放在将被找到的位置。

票数 17
EN

Stack Overflow用户

发布于 2013-01-12 16:34:28

要更好地理解include_path是什么和不是什么,请阅读本节 of php.ini手册。

如果您试图编写一个特定于项目的“自动加载程序”,那么set_include_path并不是最好的工具(您可能需要查看spl_autoload_register ),但是要回答您的问题:

set_include_path确实覆盖了以前的include_path。可以使用PATH_SEPARATOR常量作为分隔符提供多个路径,例如:

代码语言:javascript
复制
set_include_path($path1. PATH_SEPARATOR . $path2 . PATH_SEPARATOR . $path3);

因此,您可以添加到已经存在的路径,而不是像这样覆盖它:

代码语言:javascript
复制
set_include_path(get_include_path() . PATH_SEPARATOR . $mypath);
票数 6
EN

Stack Overflow用户

发布于 2013-01-12 16:31:01

set_include_path只是为PHP设置一个可能的位置来查找文件。例如:

代码语言:javascript
复制
set_include_path( WEBROOT_PRIVATE.'scripts\phpseclib' );
if(include('Net/SSH2.php')){
    echo 'pass';
} else {
    echo 'fail';
}
include WEBROOT_PRIVATE.'application/global_function_list.php';

上面的工作非常好,并且继续正确地包含应用程序所需的其他文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14295164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档