PHP __DIR__ Demo

set_include_path

Задаёт значение настройки конфигурации include_path на время выполнения скрипта.

Список параметров

Возвращаемые значения

Возвращает старое значение include_path в случае успешного выполнения или false в случае возникновения ошибки.

Примеры

Пример #1 Пример использования set_include_path()

// Или так
ini_set ( ‘include_path’ , ‘/usr/lib/pear’ );
?>

Пример #2 Составление более длинного пути include path

Используя константу PATH_SEPARATOR , можно добавить к пути вложенные директории независимо от операционной системы.

В этом примере мы добавим /usr/lib/pear в конец существующего пути include_path .

Смотрите также

  • ini_set() — Устанавливает значение настройки конфигурации
  • get_include_path() — Получение текущего значения настройки конфигурации include_path
  • restore_include_path() — Восстанавливает изначальное значение настройки конфигурации include_path
  • include — include

User Contributed Notes 1 note

If you find that this function is failing for you, and you’re not sure why, you may have set your php include path in your sites’s conf file in Apache (this may be true of .htaccess as well)

So to get it to work, comment out any «php_value include_path» type lines in your Apache conf file, and you should be able to set it now in your php code.

  • Опции PHP/информационные функции
    • assert_​options
    • assert
    • cli_​get_​process_​title
    • cli_​set_​process_​title
    • dl
    • extension_​loaded
    • gc_​collect_​cycles
    • gc_​disable
    • gc_​enable
    • gc_​enabled
    • gc_​mem_​caches
    • gc_​status
    • get_​cfg_​var
    • get_​current_​user
    • get_​defined_​constants
    • get_​extension_​funcs
    • get_​include_​path
    • get_​included_​files
    • get_​loaded_​extensions
    • get_​required_​files
    • get_​resources
    • getenv
    • getlastmod
    • getmygid
    • getmyinode
    • getmypid
    • getmyuid
    • getopt
    • getrusage
    • ini_​alter
    • ini_​get_​all
    • ini_​get
    • ini_​parse_​quantity
    • ini_​restore
    • ini_​set
    • memory_​get_​peak_​usage
    • memory_​get_​usage
    • memory_​reset_​peak_​usage
    • php_​ini_​loaded_​file
    • php_​ini_​scanned_​files
    • php_​sapi_​name
    • php_​uname
    • phpcredits
    • phpinfo
    • phpversion
    • putenv
    • set_​include_​path
    • set_​time_​limit
    • sys_​get_​temp_​dir
    • version_​compare
    • zend_​thread_​id
    • zend_​version
    • get_​magic_​quotes_​gpc
    • get_​magic_​quotes_​runtime
    • restore_​include_​path

    Источник

    PHP, Как установить include path

    и т. д. в моем скрипте для включения в функции a() и b() . Это становится довольно утомительным. Есть ли способ установить путь к каталогу и иметь несколько файлов, доступных по сценарию?

      Я попробовал это в своем скрипте:

    set_include_path('.;C:\xampp\htdocs\myfunctionfolder'); 
    include_path = ".;\xampp\php\PEAR;\xampp\htdocs\myfunctionfolder" 

    Если у меня есть много файлов, как мне получить доступ к этим файлам без необходимости включать их отдельно? Настройка переменной окружения определенно работает в командной строке.

    Нужно ли мне делать что-то еще для .php-файлов, чтобы они были доступны вместе под каталогом?

    Обычная практика заключается в том, чтобы иметь файл common.php или include.php, который включает вызовы include / include_once (для простоты). например

    Затем includes.php содержит:

    Тогда в любом скрипте речь идет о включении файла includes.php .

    Однако , чтобы ответить на ваш первоначальный вопрос, вы можете включать только один файл за раз, за ​​звонок. Вы можете использовать что-то вроде opendir и readdir для итерации по всем файлам в определенном каталоге и включать их как найденные (автоматизированные так readdir ) или выписывать каждый из них, включая вас, на основе создаваемых вами файлов.

    Кроме того, при настройке пути include задается каталог для поиска, когда выполняется вызов include . Это не каталог, в котором файлы должны быть загружены автоматически (это впечатление, которое я получаю от вашего сообщения).

    Установка include_path не будет включать в себя каждый файл в этом каталоге, он добавляет только этот каталог в список, который PHP будет искать при включении файла.

    Задает список каталогов, в которых функции require (), include (), fopen (), file (), readfile () и file_get_contents () ищут файлы.

    Это упростит включение файлов в глубокую структуру или в совершенно другой раздел файловой системы.

    include('/var/somewhere/else/foo.php'); 

    С /var/somewhere/else/ добавленным в php.ini include_path, может стать

    Кроме того, как указывали другие, существуют общие практики, но вы можете изучить классы OOPHP и автозагрузки . Это не будет работать для функций, о которых я знаю.

    Многие разработчики, пишущие объектно-ориентированные приложения, создают одно определение исходного кода PHP для каждого класса. Одно из самых больших неприятностей – писать длинный список необходимых включений в начале каждого скрипта (по одному для каждого класса).

    В PHP 5 это больше не требуется. Вы можете определить функцию __autoload, которая автоматически вызывается в случае, если вы пытаетесь использовать класс / интерфейс, который еще не определен. Вызывая эту функцию, механизму сценариев дается последний шанс загрузить класс до того, как PHP завершится с ошибкой.

    Парсер PHP довольно эффективен – вы потратите больше времени на загрузку тонны отдельных файлов вместо одного (или нескольких) более монолитных файлов. Однако, если вы настаиваете на том, чтобы такие вещи были разделены таким образом, вы можете создавать мета-файлы для загрузки наборов отдельных файлов, поэтому вы должны включать только один файл мета-include, и он делает остальное для вас:

    include('a.php'); include('p.php'); . include('z.php'); в include('a.php'); include('p.php'); . include('z.php'); в include('a.php'); include('p.php'); . include('z.php'); 

    И тогда вы просто делаете:

    в ваших сценариях, и у вас есть все отдельные загруженные для вас.

    У меня есть такая функция в большинстве моих проектов:

    function appendToIncludePath($path)

    Как включить () все файлы PHP из каталога?

    Кроме того, с точки зрения передового опыта вы можете включить несколько функций в один и тот же файл, если они вообще связаны друг с другом, и я бы также предложил иметь более описательные имена ваших функций и файлов. Например, если ваши функции a () и b () связаны, например, с валидацией, назовите файл validation.php и поместите обе функции туда и попробуйте переименовать их в нечто, что связано с тем, что они делают. Это позволит вам помнить, что они делают, когда вы начинаете накапливать огромный список функций;)

    Источник

    PHP __DIR__

    Summary: in this tutorial, you’ll learn about how to use the PHP __DIR__ magic constant when including a PHP file.

    Introduction to the PHP __DIR__ magic constant

    PHP 5.3 introduced a new magic constant called __DIR__ . When you reference the __DIR__ inside a file, it returns the directory of the file. The __DIR__ doesn’t include a trailing slash e.g., / or \ except it’s a root directory.

    When you use the __DIR__ inside an include, the __DIR__ returns the directory of the included file.

    Technically speaking, the __DIR__ is equivalent to the dirname(__FILE__) . However, using the __DIR__ is more concise than the dirname(__FILE__) .

    Simple PHP __DIR__example

    Suppose you have the following directory structure:

    . ├── inc │ ├── footer.php │ └── header.php └── index.phpCode language: CSS (css)

    The header.php contains the code of the header part:

     "en"> "UTF-8"> "viewport" content="width=device-width, initial-scale=1.0">   Code language: PHP (php)

    The footer.php contains the code of the footer part. It also shows the value of the __DIR__ constant:

    echo __DIR__ ?>

    Code language: PHP (php)

    The index.php includes both header.php and footer.php files. It also shows the value of the __DIR__ constant:

     require 'inc/header.php' ?> 

    Home

    echo __DIR__ ?>

    require 'inc/footer.php' ?>
    Code language: PHP (php)

    The following shows the output on the web browser:

    Home C:\xampp\htdocs\web C:\xampp\htdocs\web\incCode language: PHP (php)

    The __DIR__ in the index.php returns the current directory of the index.php C:\xampp\htdocs\web while the __DIR__ in the footer.php file returns the directory of the footer.php file C:\xampp\htdocs\web\inc .

    Why using PHP __DIR__

    Suppose that you have a project with the following directory structure:

    . ├── admin │ └── dashboard │ └── index.php ├── config │ └── app.php ├── inc │ ├── footer.php │ └── header.php └── public └── index.phpCode language: CSS (css)

    The config/app.php contains the application’s configuration:

     define('APP_NAME', 'My Awesome App');Code language: PHP (php)

    The header.php contains the header part of a page. It also includes the config/app.php file and uses the APP_NAME constant:

     require '../config/app.php' ?> "en"> "UTF-8"> "viewport" content="width=device-width, initial-scale=1.0">   Code language: PHP (php)

    The footer.php contains the closing tags of the body and html elements:

    The public/index.php file includes both header.php and footer.php files:

     require '../inc/header.php' ?> 

    Home

    require '../inc/footer.php'?>
    Code language: PHP (php)

    If you navigate to the http://localhost/web/public/index.php , you’ll see the following output when you view the source of the page:

     "en"> "UTF-8"> "viewport" content="width=device-width, initial-scale=1.0">   

    Dashboard

    Code language: PHP (php)

    So the index.php page in the public directory works as expected.

    The index.php in the admin/dashboard also includes the header.php and footer.php files:

     require '../../inc/header.php' ?> 

    Dashboard

    require '../../inc/footer.php' ?>
    Code language: PHP (php)

    When you browse the page http://localhost/web/admin/dashboard/index.php , you’ll see the following error:

    Warning: require(../config/app.php): failed to open stream: No such file or directory in C:\xampp\htdocs\web\inc\header.php on line 1 Fatal error: require(): Failed opening required '../config/app.php' (include_path='\xampp\php\PEAR') in C:\xampp\htdocs\web\inc\header.php on line 1Code language: PHP (php)

    The error message shows that the header.php cannot load the ‘../config/app.php’ file.

    When the index.php in the admin/dashboard directory loads the code from the header.php , it’ll find the config/app.php inside the admin directory, not root directory.

    Since the admin directory doesn’t have the config/app.php file, PHP issues an error.

    To fix this issue, you can use the __DIR__ when you include the config.php in the header.php file like this:

     require __DIR__. '/../config/app.php' ?>Code language: PHP (php)

    The index.php in the admin/dashboard will work correctly.

    This is because when PHP loads the inc/header.php file from either public/index.php or admin/dashboard/index.php , the __DIR__ inside the inc/header.php always returns C:\xampp\htdocs\web\inc .

    Therefore, it’s a good practice to use the __DIR__ constant when you include a file.

    Summary

    • PHP __DIR__ returns the directory of a file or the directory of the include file when the file is used as an include.
    • Use __DIR__ when you include a file.

    Источник

    Как мне установить абсолютный путь включения в PHP?

    В HTML я могу найти файл, начиная с корневой папки веб-сервера, начав путь к файлу с помощью «/». Как:

    Я могу поместить этот путь в любой файл в любой подкаталог, и он укажет на правильное изображение. С PHP я пробовал нечто подобное:

    . но это не работает. Я думаю, что эта страница говорит, что я могу установить include_path один раз и после этого, это будет принято. Но я не совсем понимаю синтаксис. Оба примера начинаются с периода, и он говорит:

    Использование. в include-пути допускает относительное включение, поскольку это означает текущий каталог.

    Относительные включения — это именно то, что я не хочу. Как я могу убедиться, что все мои включенные указывают на папку root/includes ? (Бонус: что, если я хочу разместить эту папку за пределами общего каталога?)

    Разъяснение

    Мои файлы разработки в настоящее время обслуживаются XAMPP/Apache. Это влияет на абсолютный путь? (Я еще не уверен, что будет сервер производства.)

    Update

    Я не знаю, что моя проблема была здесь. include_path вещь, на которую я ссылался выше, была именно тем, что я искал, и синтаксис на самом деле не запутан. Я просто попробовал, и он отлично работает. Одна вещь, которая возникает у меня, это то, что некоторые люди, возможно, подумали, что «/some/path» был «абсолютным путем», потому что они предположили, что ОС — это Linux. Этот сервер является Windows, поэтому абсолютный путь должен начинаться с имени диска. В любом случае проблема решена!:)

    Источник

    Читайте также:  Получить текущую папку python
Оцените статью