PHP, Как установить путь включения - PullRequest
11 голосов
/ 21 июля 2011

Я писал:

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 были доступны коллективно в каталоге?

Ответы [ 7 ]

12 голосов
/ 21 июля 2011

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

  • root
  • [lib]
    • a.php
    • b.php
    • includes.php
  • index.php

Тогда includes.php содержит:

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

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

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

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

6 голосов
/ 21 июля 2011

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

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

Источник

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

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

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

include('foo.php');

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

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

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

3 голосов
/ 21 июля 2011

см. Этот вопрос:

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

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

2 голосов
/ 21 июля 2011

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

function appendToIncludePath($path)
{
    ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . BASE_DIR . $path . DIRECTORY_SEPARATOR);
}
2 голосов
/ 21 июля 2011

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

meta.php:

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

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

<?php

include('meta.php');

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

0 голосов
/ 01 февраля 2019

Загрузите последнюю версию 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/

0 голосов
/ 30 января 2019
include __DIR__ . '/../folder1/folder2/folder3/Target.php';
include __DIR__ . '/../folder1/folder2/Target.php';

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

...