PHP, Как установить путь включения

php path include

54611 просмотра

7 ответа

Я писал:

include('a.php')
include('b.php')

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

  1. Я попробовал это в моем сценарии:

    set_include_path('.;C:\xampp\htdocs\myfunctionfolder');
    
  2. И я установил переменную окружения PATH, чтобы она там была старше.

  3. Я тоже в модифицированный php.ini включить

    include_path = ".;\xampp\php\PEAR;\xampp\htdocs\myfunctionfolder"
    

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

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

Автор: musicliftsme Источник Размещён: 12.11.2019 09:05

Ответы (7)


12 плюса

Решение

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

  • корень
  • [Lib]
    • a.php
    • b.php
    • includes.php
  • index.php

Затем включает в себя .php содержит:

<?php
  include_once('a.php');
  include_once('b.php');
?>

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

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

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

Автор: Brad Christie Размещён: 21.07.2011 05:38

6 плюса

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

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

Источник

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

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

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

include('foo.php');

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

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

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

Автор: Paul DelRe Размещён: 21.07.2011 05:41

3 плюса

увидеть этот вопрос:

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

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

Автор: Evan Размещён: 21.07.2011 05:45

2 плюса

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

meta.php:

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

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

<?php

include('meta.php');

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

Автор: Marc B Размещён: 21.07.2011 05:38

2 плюса

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

function appendToIncludePath($path)
{
    ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . BASE_DIR . $path . DIRECTORY_SEPARATOR);
}
Автор: Bob_Gneu Размещён: 21.07.2011 05:39

0 плюса

include __DIR__ . '/../folder1/folder2/folder3/Target.php';
include __DIR__ . '/../folder1/folder2/Target.php';

Это поможет вам пойти по любому пути.

Автор: RENFiX Размещён: 30.01.2019 09:54

0 плюса

Загрузите последнюю версию PHP zip и распакуйте ее на диск C, затем загрузите composer и установите его, во время установки он запрашивает путь PHP, поэтому просто выберите извлеченный путь PHP.

Как следовать ниже шаг.

  1. Перейти к Computer.

  2. Выберите Advance System Settings.

  3. Из системных свойств выберите Environmental Varaibles.
  4. В Environmental Varaiblesдобавить Pathв пользовательскую переменную для PCNAME
  5. В Environmental Varaiblesдобавление Pathв системных переменных.
  6. Хит ОК.
  7. Перезагрузите компьютер.
  8. Win + R тип cmd.
  9. введите команду php -v.
  10. Воля тебе хорошо идти.

PHP http://php.net/downloads.php

Композитор https://getcomposer.org/download/

Автор: Vrushal Raut Размещён: 01.02.2019 11:49
Вопросы из категории :
32x32