У меня есть пара вопросов о пути включения в PHP и включении файлов и / или классов.
Ниже приведен простой фрагмент кода, в котором мы устанавливаем несколько путей включения.Я видел это в другом проекте, но я не уверен, почему?
Мне никогда не приходилось использовать set_include_path () ни в одном из моих проектов за последние 5 лет или около того.
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
+++ plus +++
загружать классы для различных модулей (учетных записей, сообщений, друзей, фотографий, блогов, форумов и т. Д.), Расположенных где-то вроде этого ...
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');
}
?>