PHP set_include_path
Я не могу понять значение этого утверждения:
set_include_path('.'
. PATH_SEPARATOR . '../library/'
. PATH_SEPARATOR . '../application'
. PATH_SEPARATOR . get_include_path());
Быстрая поломка будет оценена.
3 ответа
Он добавляет два пути к include_path, чтобы при добавлении файла "../library/filename.php". Вы можете сделать это путем
include('filename.php');
вместо
include('../library/filename.php');
Я полагаю, это является частью какой-то структуры
Это в основном добавляет папку к пути включения php
Первое, что следует отметить здесь, это то, что постоянная PATH_SEPARATOR
является предопределенной константой, которая допускает кроссплатформенный разделитель пути (он разрешается в ":" в Unix-подобных системах и ";" в Windows).
Следующий код также даст тот же результат, но его немного легче читать:
<?php
$paths = array('.', '../library/', '../application', get_include_path());
set_include_path(join(PATH_SEPARATOR, $paths));
или немного более многословно, но легко добавить к:
<?php
$paths[] = '.';
$paths[] = '../library/';
$paths[] = '../application';
$paths[] = get_include_path();
set_include_path(join(PATH_SEPARATOR, $paths));
Что делает функция set_include_path в php?
Это устанавливает возможное местоположение для механизма php, чтобы искать файлы.
Например:
Я положил это в php-файл под названием cmp.php
под /home1/machines/public_html
<?php
print "1<br>";
require("hello.php");
print "<br>2<br>";
set_include_path("/home1/machines/public_html/php");
print "<br>3<br>";
require("hello.php");
print "<br>4<br>";
?>
Создать новый файл hello.php
под /home1/machines/public_html
Поместите это туда:
<?php
print "hello from public_html";
?>
Создайте второй новый файл с именем hello.php
под /home1/machines/public_html/php
Поместите это туда:
<?php
print "hello from public_html/php";
?>
Бежать cmp.php
и вы должны получить это: