gpt4 book ai didi

php - 为什么在 PHP 中使用 set_include_path() 以及如何从不同的文件夹自动加载类?

转载 作者:可可西里 更新时间:2023-11-01 12:56:11 28 4
gpt4 key购买 nike

我有几个关于 PHP 中的包含路径以及包含文件和/或类的问题。

下面是一段简单的代码片段,我们在其中设置了多个包含路径。我在另一个项目中看到了这个,但我不确定为什么?

在过去 5 年左右的时间里,我从未在我的任何项目中使用过 set_include_path()

Q1)
那么设置包含路径的目的究竟是什么?我总是在我的 include() 调用中包含路径。

Q2)
在下面的示例中,它设置了不止 1 个路径。这如何在多个位置包含文件,我对目的或它的作用感到困惑?

<?php
// Define App path
define('APPLICATION_PATH', realpath('../'));

// Build array of 3 different paths
$paths = array(
APPLICATION_PATH,
APPLICATION_PATH . '\com',
get_include_path()
);


/*
Result of array above...
Array
(
[0] => E:\Web Server\xampp\htdocs\test
[1] => E:\Web Server\xampp\htdocs\test\com
[2] => .;C:\php5\pear
)
*/

// Set include path from array above
// http://us3.php.net/manual/en/function.set-include-path.php
set_include_path(implode(PATH_SEPARATOR, $paths));

?>

Q3)
这是一个略有不同的问题,但仍然与包含有关。下面是一个简单的类自动加载函数。我曾经有一个类文件夹并自动加载我所有的类文件。在我当前的项目中,我有一个类库可以像下面那样自动加载,但我还有另一个部分,我可能需要从模块目录自动加载类文件。

所以我需要自动加载我的库类,它位于这样的地方......

root/includes/library/classes/library_class_files.php

+++++++

为位于某处的不同模块(帐户、消息、 friend 、照片、博客、论坛等)加载类....

root/modules/forums/modules_class_files.php

我可能不需要从 2 个不同的位置加载类文件,但如果需要,我将如何做呢?

<?php
//auto include class files that we need on a per page basis
function __autoload($class_name){
include('library/classes/' .$class_name . '.class.php');
}
?>

最佳答案

Q1:http://php.net/manual/en/ini.core.php#ini.include-path

问题 2:如手册中所述,PHP 遍历每个路径并尝试找到您的文件。

Q3:使用更现代的SPL Autoloader functionality您可以根据需要定义任意数量的自动加载器。

关于php - 为什么在 PHP 中使用 set_include_path() 以及如何从不同的文件夹自动加载类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4811289/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com