我对 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)
这是一个略有不同的问题,但仍然与包含有关。下面是一个简单的类自动加载功能。我曾经有一个类文件夹并自动加载我所有的类文件。在我当前的项目中,我有一个类库来自动加载,如下所示,但我还有另一个部分,我可能需要从模块目录自动加载类文件。
所以我需要自动加载我的库类位于这样的地方......
根/includes/library/classes/library_class_files.php
+++加+++
为类似这样的某个地方的不同模块(帐户、消息、朋友、照片、博客、论坛等)加载类......
根/模块/论坛/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');
}
?>