Php подключить файл из директории выше
Программисты не пишут код в одном файле, а разбивают проект на десятки файлов и папок. Без этого нельзя обойтись, если хотите ориентироваться в проекте. Если у нас будет 1 файл на 100000 строк кода, то работать с ним будет затруднительно.
Один php файл, можно подключить в другой, например так:
Вычислить абсолютный путь для директории и подключить другой файл, который находится в ней, можно следующим образом.
У функции имеются братья. Такие как include_once, require, require_once.
Отличия заключаются в том, что если использовать require, то в случае если файла нет, будет выдаваться ошибка и выполнение скрипта дальше не пойдет, в отличие от include.
В свою очередь постфикс _once означает, что несмотря на то, сколько раз вы попытаетесь подключить файл, он подключится только 1 раз.
Теперь обратите внимание, что организовывать код проекта, при помощи include и require - неправильный подход. Он был хорош 20 лет назад, когда лучше просто не умели.
С помощью функции autoload, вы сможете сделать так, чтобы когда вы пишите название класса например:
То автоматически, если этого еще не сделано, подключался некий файл, в котором и содержится описание данного класса, а об использовании, для этих целей include, require можно просто забыть.
Приведу простой пример того, как можно сделать автозагрузку классов.
Для этого создаем функцию, в которую будет передавать управления всякий раз, когда в коде встречается название класса, который не был объявлен.
В данном случае, мы пытаемся создать экземпляр несуществующего класса Abracadabra .
С помощью spl_autoload_register определили функцию, которая будет разбираться с этой ситуацией. В переменной $class оказалось название класса, который мы вызываем.
Сейчас мы просто печатаем название класса при помощи echo , и нам выведется текст: "Abracadabra".
Если мы вызываем класс, который находится в каком-то пространстве имен, то это также успешно обработается функцией.
Теперь осталось доработать нашу функцию автозагрузки так, чтобы она вместо вывода названия класса (нам это ни к чему), организовывала подключение файла с описанием класса.
Она будет выглядеть следующим образом:
Это очень простой пример, который вы не захотите использовать в настоящих проектах.
У каждого фреймворка могут быть свои способы организовать автозагрузку. Вот описание того, как это работает в yii2: yii2 автозагрузка классов.
Некоторые также придумывают свои велосипеды.
Также существует composer, в котором, при помощи autoload, организована автозагрузка многочисленных расширений.
Подключить файл директорией выше
Как подключить файл директорией выше? Вот так не получается((.
Как открыть файл, расположенный выше текущего каталога?
Подскажите, как открыть файл, который лежит в каталоге, в котором находится текущий каталог.
Найти максимальный элемент, расположенный выше главной диагонали
Пожалуйста, помогите решить задачу. Дана матрица размером 5*5. Найти максимальный элемент.
найти макс элемент, расположенный выше побочной диагонали
в матрице 5*5, найти макс элемент, расположенный выше побочной диагонали, вывести его на печать а.
в том то и дело, что файл есть. Уже на говно изошел, думая - что может быть :cry:
не существует. Но он там есть ( с таким именем (собственно, копировал имя). ./ и ../, указывающие на один и тот же путь (каталог вложен в корень) выдают разные результатызначит именно там он не существует.
Добавлено через 2 минуты
скопируй из этой строки кода название файла и переименуй, если ты уверен в том что он существует. именно выше этой папки должен быть, т.е. если скрипт лежит в папке home/bla/php/imya_scripta.php - файл должен лежать в папке home/bla/file.php
Добавлено через 2 минуты
пых не обманешь: :D
"Говорю нет файла, значит его нет! И мне плевать что ты там думаешь о его существовании" (с)
Кинь на *уже убрано цензурой* пустое письмо - скину архив, может поймешь что не так, ибо это единственное, что фейлит все. Аль занят?
компьютер не такой умный, чтоб сам по себе генерировать ошибки )
в этом самом файле config.php поменяй $ROOT_FOLDER на абсолютный путь вместо относительного.. компьютер? нет, компьютер - это просто кусок железа.. но не забывайте, что и программы, и собственно саму систему писали люди - а уж при желании генерацию ошибки можно сделать ;) например, на винде попробуйте создать папку с именем con :D (другие приколы уже не помню)Добавлено через 42 секунды
как и писали с самого начала. в обычных по обычному - во вложенных папках ../
Добавлено через 1 минуту
ы. не проверил)))) эпик фэйл
все, разобрался. Суть: подключал конфигурационный файл в файл1 и файл2 двумя разными способами, потом вызывал файл2 из файл1, и т.к. include_once проверяет точное соответствие путей заголовкjd? то оно не обнаружило подключения одного и того же файла (т.е. в файл было include_once "/ololo.php";, а в файл2 include_once "../ololo.php"
была неверно интерпретирована мной ошибка )
Добавлено через 43 секунды
Найти максимальный элемент матрицы, расположенный выше побочной диагонали
В матрице A , где 'n' <= 100 найти максимальный элемент, расположенный выше побочной диагонали и.
Наибольший элемент квадратной матрицы, расположенный выше главной диагонали
1)Наибольший элемент квадратной матрицы, расположенный выше главной диагонали. 2)Произведение.
Найти третий нечётный элемент расположенный выше побочной диагонали
7)Дан двумерный массив. Найти третий нечётный элемент расположенный выше побочной диагонали.
Найти максимальный элемент, расположенный выше побочной диагонали матрицы
В матрице (5,5) найти максимальный элемент, расположенный выше побочной диагонали, вывести его на.
В PHP подключаем файлы операторами include и require.
В этом уроке мы научимся подключать страницы. Для того чтобы подключить файлы в php используем операторы include и require.
Оба этих оператора подключают файлы, разница лишь в том что если require не найдет подключаемый файл, выдаст ошибку и остановит сценарий. Его используют когда подключаемые файлы обязательны для работы, а include позволяет подключать файлы динамически во время выполнения сценария и если файла нет просто пропустит его, и продолжит выполнять код дальше. У этих операторов есть конструкция однократного включения include_once и require_once, если вы подключили файл этим оператором, то второй раз он уже не подключится. Пример
Создадим в корневой директории файлы
index.php, test1.php и папку file и в ней test2.php
В тест1 запишем
В index.php подключим файл test1.php в корневой папке, то есть в той что и интекс и подключим test2.php который в папке file.
Это файл в корневой директории test 1 // 1 подключился
Это файл test 2 в папке file // 2 подключился
// 3 не подключился, так как он уже был подключен в 1.
Warning: require(file/test.php): // 4 ошибка так как такого файла нет и скрипт прекратил свою работу.
Добавим в файл test2.php, внизу переменную с текстом.
И выведем эту переменную в конце файла index.php с тегами html заглавными буквами.
Такая запись используется для вставок в html код короткого кода php. Если у вас ошибка значить вы не закрыли предыдущий код php.
Запись появится в файле index.php, так как мы подключили к индексу файл тест2. То и можем обращаться к его содержимому. Подключение должно быть всегда перед обращением к данным файла.
Подключить файл на директорию выше
Создадим в папке file файл test3.php и в него подключим файл index.php
Откроем файл тест3 который лежит /file/test3.php и увидим все тоже что и в файле индекс.
Если мы переподключим файлы друг в друга, то у нас выведет ошибку.
В файл tect2.php запишем проверочную функцию file_exists
Для проверки находится ли в папке файл используем встроенную функцию, запишем ее как тернарный оператор.
Теперь зайдя /file/test2.php в верху справа строки (Это файл test 2 в папке file) будет надпись Существует, а при переходе на index.php, Не существует.
Следует всегда подключать файлы, перед использованием данных из них. В видео уроке создание сайта, мы разберем правильное подключение зависимых файлов к нашему макету.
Полезные константы
В PHP есть полезные встроенные константы, которые пригодятся для использования в пути к подключаемым категориям и файлам. Записывается так, два подчеркивания, заглавные буквы и два подчеркивания. Пример
__DIR__ — Полный путь к директории, в которой находится текущий файл.
__FILE__— Полный путь к исполняемому файлу.
Запишем ниже в файл тест2 вывод директории и путь к файлу.
Так же подключаем файлы при помощи операторов __DIR__ . ставим конкатенацию и / слеш перед обращением к каталогу. Пример
Подключая файлы с константой __DIR__ вы сможете переименовать директорию выше без ошибок, все файлы останутся подключенными и при работе с cron позволяет избежать ошибок.
При этом в подключении файлов с данными от пользователей эти константы лучше не использовать.
Подключить функцию в php
Подключить файл с функцией в php можно всего один раз, любым из выше перечисленных операторов иначе будет ошибка. Пример создадим файл test4.php и запишем в него переменные и функцию.
Увидим 5 яблок меньше. Подключать функцию уже с выводом результата возможно один раз на странице, а вот обращаться к функции и выводить результат, сколько угодно раз. Запишем результат из функции в самом низу страницы индекс. Передадим в функцию новые аргументы, выведем ее в краткой записи php и в теге html.
Получим 19 яблок меньше. Заметили ошибку? Мы передавали аргумент груши, а нам выдало яблоки. Здесь нужно быть внимательными при передаче аргументов в параметры и параметров в условие.
Таким образом мы можем использовать функцию сколько угодно раз выводить результат.
Подключаем фал при помощи функции
Создадим функцию test4
Подключить файл в php с другого сайта
Конструкция include позволяет включать удаленные файлы, если такая возможность включена в конфигурационном файле PHP. Чтобы подключение было возможным, в Open Server в php.ini, дополнительно, конфигурация, версия php которую вы используете. Раскомментируйте строку и установите значение 1
allow_url_include = 1
Не рекомендуется в целях безопасности сайта. Используйте только для теста примера.
Приветствую читателей блога! У вас наверняка уже есть небольшой опыт в кодинге на PHP. Возможно, вы уже разобрались с использованием переменных и базовых конструкций этого языка, а значит, логика вашего приложения увеличивается, как и количества кода.
Конечно, пока вся программа уменьшается в десяток строк, разбивать её на части не нужно. Но вы уже понимаете, что так будет не всегда: авторизация, отправка писем, взаимодействия с базой данных и т.д. – все это приведет к увеличению кода приложения.
Вы спросите: «Ну и что с того? Разве плохо писать всю логику в одном файле?». Стопроцентного ответа на этот вопрос нет, но мой опыт говорит, что код приложения, написанный в одном файле:
- при дополнении и внесении новой логики приводит к частым ошибкам
- требует большего времени для изучения другим разработчиком
- через месяц-два при необходимости маленькой правки потребует у тебя гораздо больше времени на понимание кода, чем на саму правку.
Если этих доводов недостаточно – советую почитать книгу Роберта Мартина «Чистый код». А пока продолжу.
Представим, что у нас есть 2 файла: `index.php` и `1.php`, лежащих в одной директории.
Задача: вывести содержимое файла "1.php" в контейнере `body`, при запуске файла "index.php". Решить её можно разными способами, и в этом посте мы рассмотрим некоторые из них. Подключение PHP возможно с помощью разных инструкций:
- `include`
- `include_once`
- `require`
- `require_once`
Самый простой пример решения с `include`:
Результат запуска в браузере:
Как подключить PHP из другой директории
Теперь изменим условия. Переместим файл `1.php` в папку с названием `test`, которую создадим в директории с файлом `index.php`.
Поскольку подключаемый файл находится в другой директории, для его подключения следует указать сначала папку, в которой он находится, а потом и сам файл.
Далее изменим код в `index.php`.
Строка, что мы указываем после инструкции `include`, это путь к файлу. Он может быть относительный (к файлу, где используется подключение) и абсолютным (от корня файловой системы). В приложениях рекомендуются использовать относительные пути.
Между папками, файлами и другими папками в пути устанавливаются разделители. Универсальный разделитель для различных операционных систем – `/`.
Если в папке `test` у нас была бы еще папка `lot`, в которой лежал файл `1.php`, то относительный путь выглядел бы так: 'test/lot/1.php'.
С путями немного разобрались – возвращаемся к инструкциям. Произведем изменения в файлах. Файл "index.php":
Посмотрим на изменение в выводе:
Как работает подключение кода PHP
Интерпретатор php «читает» код сверху вниз и слева направо, как мы читаем книги на русском языке. На исполнение от сервера ему указывается файл "index.php", а значит, чтение начинается с него. Дойдя до строчки с `include 'test/1.php'`, интерпретатор пытается найти и исполнить это файл так, как будто он является частью "index.php".
Перед подключением и исполнением файла "1.php" уже существует переменная `$say`, в которой содержится 'Hello world!'. При выполнении файла "1.php", содержимое этой переменной выводится на экран и создается переменная `$test`, которая в свою очередь и выводится на экран в файле `index.php`.
Если описанное выше непонятно, советую немного поиграться с файлами `1.php` и `index.php` создавая и выводя в них переменные.
Различия `include`, `include_once`, `require`, `require_once`
Переименуем файл "1.php"в файл "2.php" и обратимся к "index.php":
В итоге получаем ошибку. Но обратите внимание на то, что после вывода ошибки код PHP все равно продолжил выполнение и вывел `End`. Заменим `include` на `require` и запустим на выполнение.
В итоге видим похожие ошибки, но не видим вывода `End` в конце: после ошибки код php прекратил свою работу.
Разница между `include` и `require` заключается в том, что при подключении файла PHP первая инструкция позволяет продолжить выполнения скрипта, если не найден файл, а `require` завершает его, выводя фатальную ошибку.
Теперь рассмотрим отличие инструкций `require` и `require_once`. Внесем небольшие правки в наши файлы. Вот новый "index.php":
Как видно на скриншоте, с помощью `require` мы успешно подключили файл несколько раз. Снова внесем изменение в файлы. Новый файл "index.php":
И новый файл "2.php" — на этот раз объявим там функцию:
Второе подключение файла "2.php" приводит к ошибке, как раз потому что в этом файле происходит объявление функции. А в PHP-скрипте двух одинаковых функций быть не должно.
Теперь заменим все `require` на `require_once` и запустим снова:
Ура, работает! Но обратим внимание на то, что файл подключился только один раз.
Теперь вновь переименуем файл `2.php` в `1.php` и запустим "index.php".
`Require_once`, так же как и `require` завершает выполнение скрипта, если не найден файл указанный для подключения. Заменим `require_once` на `include_once`:
Ошибок стало больше, но код по-прежнему отработал до конца: end в конце картинки это подтверждает. Внесем правки в "index.php":
Подведём итоги
Чтобы подключить PHP-файлы, можно воспользоваться четырьмя похожими инструкциями — `include` и `include_once`, `require` и `require_once`.
- Разница между `include` и `require`: при отсутствии файла последняя выводит фатальную ошибку, а первая — нет.
- Разница между `include` и `include_once` (а также `require` и `require_once` соответственно): инструкции с “once” проверяют перед подключением, был ли этот файл подключен ранее. Если он подключался, повторного подключения не произойдет.
- Разница между `require_once` и `include_once`: думаю, она понятна из двух предыдущих пунктов :)
Если вы хотите освоить PHP во всей его полноте — приглашаем вас на курсы PHP-разработки в GeekBrains. За шесть месяцев вы изучите не только работу с PHP, но и другие важные в профессии технологии — фреймворк Laravel, базы данных MS SQL и Postgre SQL, основы HTML/CSS и ООП. А также сможете пройти полноценную онлайн-стажировку!
Читайте также: