Php include and require files
Содержание:
- Разбор полетов
- Including a PHP File into Another PHP File
- PHP include and require Statements
- PHP include Examples
- Динамические страницы и что для них нужно
- Различия `include`, `include_once`, `require`, `require_once`
- Функция require()
- PHP Примеры include
- Как подключить PHP из другой директории
- PHP include vs. require
- Как работает подключение кода PHP
- Difference Between include and require Statements
- Для чего используется include!?
- Компиляция под Win32
- Предисловие
- PHP include Examples
- The include_once and require_once Statements
- Summary
- PHP включают и требуют заявления
- Ответ 4
- Другие решения
- Решение
- PHP include vs. require
Разбор полетов
В большинстве задач для которых используется — front-end или основной веб-сервер, и высокая нагрузка на частое явление. Пропуская способность вашего сервера должны быть максимально возможная.
Измерение пропускной способности
Для измерения пропускной способности веб-сервера используется великолепная утилита от Apache — ab. Если вы еще с ней не знакомы, то настоятельно рекомендую это сделать.
Код веб-сервера одинаков за исключением обработчиков.
Тест запускался на с использованием модуля , сделанного на базе
Код:
Результат:
Код:
Результат:
Анализ результатов
Импортирование модулей в начале файла уменьшило время одного запроса на ~23%(!) (в сравнение с импортированием непосредственно в обработчик), что весьма существенно.
Такая большая разница в результатах кроется в работе функции . Перед импортированием, обращается к алгоритму поиска абсолютного пути к запрашиваемому компоненту (алгоритм в документации node.js). Когда путь был найден, то проверяет был ли закеширован модуль, и если нет — не делает ничего сверхестественного, кроме для и форматов, и для загрузки C++ модулей.
Note: пробовал «прогревать» кеш для случая с непосредственным импортированием модулей в обработчик (перед запуском утилиты ab, модули были уже закешированы) — производительность улучшалась на 1-2%.
Including a PHP File into Another PHP File
The and statement allow you to include the code contained in a PHP file within another PHP file. Including a file produces the same result as copying the script from the file specified and pasted into the location where it is called.
You can save a lot of time and work through including files — Just store a block of code in a separate file and include it wherever you want using the and statements instead of typing the entire block of code multiple times. A typical example is including the header, footer and menu file within all the pages of a website.
The basic syntax of the and statement can be given with:
Tip: Like the and statements, you can omit the parentheses while using the and statements as demonstrated above.
The following example will show you how to include the common header, footer and menu codes which are stored in separate ‘header.php’, ‘footer.php’ and ‘menu.php’ files respectively, within all the pages of your website. Using this technique you can update all pages of the website at once by making the changes to just one file, this saves a lot of repetitive work.
PHP include and require Statements
It is possible to insert the content of one PHP file into another PHP file (before the
server executes it), with the include or require statement.
The include and require statements are identical, except upon failure:
- will produce a fatal error (E_COMPILE_ERROR) and stop the script
- will only produce a warning (E_WARNING) and the script will continue
So, if you want the execution to go on and show users the output, even if the
include file is missing, use the include statement. Otherwise, in case of FrameWork, CMS, or a
complex PHP application coding, always use the require statement to include a key file to the
flow of execution. This will help avoid compromising your application’s security
and integrity, just in-case one key file is accidentally missing.
Including files saves a lot of work. This means that
you can create a standard header, footer, or menu file for all your web pages.
Then, when the header needs to be updated, you can only
update the header include file.
PHP include Examples
Example 1
Assume we have a standard footer file called «footer.php», that looks like this:
<?phpecho «<p>Copyright © 1999-» . date(«Y») . » W3Schools.com</p>»;?>
To include the footer file in a page, use the statement:
Example
<html>
<body>
<h1>Welcome to my home page!</h1>
<p>Some text.</p><p>Some more text.</p><?php include ‘footer.php’;?>
</body>
</html>
Example 2
Assume we have a standard menu file called «menu.php»:
<?phpecho ‘<a href=»/default.asp»>Home</a> -<a href=»/html/default.asp»>HTML Tutorial</a> -<a href=»/css/default.asp»>CSS Tutorial</a> -<a href=»/js/default.asp»>JavaScript Tutorial</a> -<a href=»default.asp»>PHP Tutorial</a>’;?>
All pages in the Web site should use this menu file. Here is how it can be done
(we are using a <div> element so that the menu easily can be styled with CSS later):
Example
<html>
<body>
<div class=»menu»><?php include ‘menu.php’;?></div>
<h1>Welcome to my home page!</h1><p>Some text.</p><p>Some more text.</p>
</body>
</html>
Example 3
Assume we have a file called «vars.php», with some variables defined:
<?php
$color=’red’;
$car=’BMW’;
?>
Then, if we include the «vars.php» file, the variables can be used in the calling file:
Example
<html>
<body>
<h1>Welcome to my home page!</h1>
<?php include ‘vars.php’;
echo «I have a $color $car.»;?>
</body>
</html>
Динамические страницы и что для них нужно
Помимо статических есть ещё динамические страницы. Таких сейчас в Интернете большинство. Информация в них подгружается из внешних источников, например базы данных или других файлов. Содержимое и форматирование таких страниц может меняться в зависимости от действий пользователя. Для правки динамических сайтов не обязательно вмешиваться в их код – достаточно изменить контент в специально для него предназначенном файле или базе данных, которая, к слову, представляет собой тоже файл, только определённым образом структурированный.
Для создания динамических сайтов только HTML и CSS недостаточно. Тут используются ещё и языки программирования, а также базы данных и языки запросов к ним. Чаще всего современные динамические сайты используют в своей работе HTML, CSS, PHP, JavaScript, SQL. Первые две аббревиатуры вам уже знакомы не понаслышке, SQL применяется для доступа к базам данных, JavaScript — клиентский язык, команды которого обрабатываются браузером и зачастую используются, чтобы показывать вам всякую красоту вроде шторок или плавно открывающихся фотографий, а вот 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»:
<!doctype html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Document<title> <head> <body> <?php $say = 'Hello world!'; require 'test/2.php'; require 'test/2.php'; require 'test/2.php'; require 'test/2.php'; echo "<p>End<p>"; ?> <body> <html>
И файл «2.php»:
<?php echo "<h1>{$say}</h1>";
Запускаем:
Как видно на скриншоте, с помощью `require` мы успешно подключили файл несколько раз. Снова внесем изменение в файлы. Новый файл «index.php»:
<!doctype html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Document<title> <head> <body> <?php require 'test/2.php'; require 'test/2.php'; require 'test/2.php'; require 'test/2.php'; echo "<p>End<p>"; ?> <body> <html>
И новый файл «2.php» — на этот раз объявим там функцию:
<?php echo '<p>Im included</p>'; function sayHello($say) { echo "<h1>{$say}</h1>"; }
Результат выполнения:
Второе подключение файла «2.php» приводит к ошибке, как раз потому что в этом файле происходит объявление функции. А в PHP-скрипте двух одинаковых функций быть не должно.
Теперь заменим все `require` на `require_once` и запустим снова:
Ура, работает! Но обратим внимание на то, что файл подключился только один раз. Теперь вновь переименуем файл `2.php` в `1.php` и запустим «index.php»
Теперь вновь переименуем файл `2.php` в `1.php` и запустим «index.php».
`Require_once`, так же как и `require` завершает выполнение скрипта, если не найден файл указанный для подключения. Заменим `require_once` на `include_once`:
Ошибок стало больше, но код по-прежнему отработал до конца: end в конце картинки это подтверждает. Внесем правки в «index.php»:
<!doctype html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Document<title> <head> <body> <?php include_once 'test/1.php'; include_once 'test/1.php'; include_once 'test/1.php'; include_once 'test/1.php'; echo "<p>End<p>"; ?> <body> <html>
Запустим код:
Функция require()
Функция require() принимает весь текст в указанном файле и копирует его в файл, который использует функцию include. Если есть какие — либо проблемы при загрузке файла, то функция require() генерирует фатальную ошибку и остановить выполнение сценария.
Таким образом, нет разницы в require() и include(), за исключением того, что они обрабатывают условия ошибки. Рекомендуется использовать функцию require() вместо include(), поскольку скрипты не должны продолжать выполняться, если файлы отсутствуют или неназванные.
Вы можете попробовать использовать вышеприведенный пример с функцией require(), и он будет генерировать тот же результат. Но если вы попытаетесь выполнить два примера, где файл не существует, вы получите разные результаты.
<?php include ("xxmenu.php"); ?> <p>Это пример, показывающий, как включить неправильный файл PHP!</p>
Это приведет к следующему результату —
Теперь давайте попробовать тот же пример с require().
<?php require ( " xxmenu.php " ); ?> <p> Это пример, показывающий, как включить неправильный файл PHP!</p>
Это временное выполнение файла останавливается, и ничего не отображается.
Новые статьи
- Ошибки в PHP и обработка исключений — 12/04/2018 19:21
- Регулярные выражения PHP -Кванторы, мета-символы и модификаторы — 12/04/2018 19:20
- Сеансы PHP — Запуск, уничтожение, сессии без файлов cookie — 12/04/2018 19:20
- PHP-файлы cookie — Настройка, доступ и удаление cookie — 12/04/2018 19:19
- Файлы PHP и ввод-вывод — открытие, чтение, запись и закрытие файла — 12/04/2018 19:18
- Методы PHP GET и POST, переменная $_REQUEST — 12/04/2018 19:17
- Загрузка файлов PHP — Создание формы и сценария загрузки — 12/04/2018 19:16
- Объектно-ориентированное программирование в PHP — 12/04/2018 19:15
Предыдущие статьи
- Предопределенные переменные PHP — Суперглобальные массивы и переменные сервера — 12/04/2018 19:13
- Функции с параметрами, динамические вызовы, создание функции в PHP — 12/04/2018 19:12
- Типы операторов PHP — категории, присваивания, логические операторы — 12/04/2018 19:11
- Типы циклов PHP for, foreach, continue, break, do-while — 12/04/2018 19:10
- Принятие решений PHP — ElseIf Switch — 12/04/2018 19:09
- Типы констант PHP — Различия между константами и переменными — 12/04/2018 19:08
- Массивы PHP: Многомерные, ассоциативные и числовые массивы — 12/04/2018 19:07
- Типы переменных, область и имена переменных в PHP — 12/04/2018 19:06
- Строки в PHP, strpos, strlen, конкатенация строк — 12/04/2018 19:05
- Дата и время, получение, преобразование времени в PHP — 12/04/2018 19:03
- Обзор синтаксиса, канонические теги, комментирование PHP-кода — 12/04/2018 19:02
- Введение в PHP. Общее использование, характеристики PHP — 12/04/2018 19:01
PHP Примеры include
Пример 1
Предположим, у нас есть стандартный файл нижнего колонтитула «footer.php», он выглядит так:
<?phpecho «<p>Copyright © 1999-» . date(«Y») . » SchoolsW3.com</p>»;?>
Чтобы подключить в файл «footer.php» на странице, используйте заявление :
Пример
<html>
<body>
<h1>Добро пожаловать на мою домашнюю страницу!</h1>
<p>Немного текста.</p><p>Еще немного текста.</p><?php include ‘footer.php’;?>
</body>
</html>
Пример 2
Предположим у нас есть стандартное меню Файл «menu.php»:
<?phpecho ‘<a href=»/index.php»>Главная</a> -<a href=»/html/index.php»>Учебник HTML</a> -<a href=»/css/index.php»>Учебник CSS</a> -<a href=»/js/index.php»>УчебникJavaScript</a> -<a href=»index.php»>Учебник PHP</a>’;?>
Все страницы на веб сайте должны использовать файл «menu.php». Вот как это можно сделать
(мы используем элемент a <div>, чтобы меню легко можно было стилизовать с помощью CSS позже):
Пример
<html>
<body>
<div class=»menu»><?php include ‘menu.php’;?></div>
<h1>Добро пожаловать на мою домашнюю страницу!</h1><p>Немного текста.</p><p>Еще немного текста.</p>
</body>
</html>
Пример 3
Предположим у нас есть файл с названием «vars.php», с определенными переменными:
<?php
$color=’красный’;
$car=’БМВ’;
?>
После этого, если мы подключаем файл «vars.php», переменные могут использоваться в подключающем файле:
Пример
<html>
<body>
<h1>Добро пожаловать на мою домашнюю страницу!</h1>
<?php include ‘vars.php’;
echo «У меня есть $color $car.»;?>
</body>
</html>
Как подключить PHP из другой директории
Теперь изменим условия. Переместим файл `1.php` в папку с названием `test`, которую создадим в директории с файлом `index.php`.
Поскольку подключаемый файл находится в другой директории, для его подключения следует указать сначала папку, в которой он находится, а потом и сам файл.
Далее изменим код в `index.php`.
<?php include 'test/1.php'; ?>
Строка, что мы указываем после инструкции `include`, это путь к файлу. Он может быть относительный (к файлу, где используется подключение) и абсолютным (от корня файловой системы). В приложениях рекомендуются использовать относительные пути.
Между папками, файлами и другими папками в пути устанавливаются разделители. Универсальный разделитель для различных операционных систем – `/`.
Если в папке `test` у нас была бы еще папка `lot`, в которой лежал файл `1.php`, то относительный путь выглядел бы так: ‘test/lot/1.php’.
С путями немного разобрались – возвращаемся к инструкциям. Произведем изменения в файлах. Файл «index.php»:
<!doctype html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Document<title> <head> <body> <?php $say = 'Hello world!'; include 'test/1.php'; echo $test; echo "<p>End<p>"; ?> <body> <html>
Файл `1.php`:
<?php echo "<h1>{$say}</h1>"; $test = 'TEst connect';
Посмотрим на изменение в выводе:
PHP include vs. require
The statement is also used to include a file into the PHP code.
However, there is one big difference between include and require; when a
file is included with the statement and PHP cannot find it, the script
will continue to execute:
Example
<html>
<body>
<h1>Welcome to my home page!</h1>
<?php include ‘noFileExists.php’;
echo «I have a $color $car.»;?>
</body>
</html>
If we do the same example using the statement, the
echo statement will not be executed because the script execution dies after the
statement returned a fatal error:
Example
<html>
<body>
<h1>Welcome to my home page!</h1>
<?php require ‘noFileExists.php’;
echo «I have a $color $car.»;?>
</body>
</html>
Use when the file is required by the application.
Use when the file is not required and application should continue when file is not found.
Как работает подключение кода PHP
Интерпретатор php «читает» код сверху вниз и слева направо, как мы читаем книги на русском языке. На исполнение от сервера ему указывается файл «index.php», а значит, чтение начинается с него. Дойдя до строчки с `include ‘test/1.php’`, интерпретатор пытается найти и исполнить это файл так, как будто он является частью «index.php».
Перед подключением и исполнением файла «1.php» уже существует переменная `$say`, в которой содержится ‘Hello world!’. При выполнении файла «1.php», содержимое этой переменной выводится на экран и создается переменная `$test`, которая в свою очередь и выводится на экран в файле `index.php`.
Если описанное выше непонятно, советую немного поиграться с файлами `1.php` и `index.php` создавая и выводя в них переменные.
Difference Between include and require Statements
You might be thinking if we can include files using the statement then why we need . Typically the statement operates like .
The only difference is — the statement will only generate a PHP warning but allow script execution to continue if the file to be included can’t be found, whereas the statement will generate a fatal error and stops the script execution.
Example
Run this code
Tip: It is recommended to use the statement if you’re including the library files or files containing the functions and configuration variables that are essential for running your application, such as database configuration file.
Для чего используется include!?
Давайте я расскажу на собственном примере, «для чего используется include» и сразу станет все понятно.
Мой сайт состоит, если грубо, то из 5 файлов:
Главный файл «__NEW_CONFIG.php», с которого загружается весь сайт.
Есть страница, https://dwweb.ru/blog.html, при загрузке которой требуется получить данные базы данных и вывести список страниц. Поэтому инклудится файл «__ALL_ROTATE.php»(который обрабатывает эти данные) по условию if($its_blog) + аналогично со страницами тем(например) https://dwweb.ru/?tema=html
Во всех других случаях, выводить и обрабатывать базу не требуется. Но если мы посмотрим на «__ALL_TiTLES.php», то он загружается в любом случае, потому, что он обрабатывает, title, description и keywords — которые нужны на каждой странице.
У меня каждая страница лежит в отдельном файле, и он загружается тогда, когда в адресной строке — адрес данной страницы, тоже с помощью include:
Надеюсь принцип понятен, если нет то:
Компиляция под Win32
Как известноExpress
- Скомпилированные бинарники PHP 5.3, которые можно взять здесь,
- Исходники PHP 5.3, которые можно скачать с сайта или вытянуть из общедоступного SVN,
- Желание поэкспериментировать и немного терпения.
- Щелкните правой кнопкой мыши в Solution Explorer’e и выберите Properties > C/C++ > General > Additional Include Directories. Сюда мы добавим директории, в которых лежат распакованные исходники и заголовочные файлы PHP. Конкретно нужны будут:
php-5.3.6 php-5.3.6\main php-5.3.6\TSRM php-5.3.6\Zend
- Теперь добавим preprocessor definitions, которые нужны для корректного выбора платформы и компиляции модуля. Выбираем Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions, и добавляем туда следующее:
PHP_WIN32 ZEND_WIN32 ZTS=1 ZEND_DEBUG=0
- Затем укажем линковщику где можно найти необходимые библиотеки. Выбираем Configuration Properties > Linker > General > Additional Library Directories. Там выбираем директорию \div из бинарников PHP. Должно получиться что-то такое: «D:\Program Files\php-5.3.6-Win32-VC9-x86\dev».
- Теперь укажем конкретную либу для линковщика. Идем в Configuration Properties > Linker > Input > Additional Dependencies, и вписываем туда php5ts.lib, которая находится в той самой \dev директории, которую мы указали в предыдущем шаге.
- Для избегания некоторых проблем компиляции, добавим директиву /FORCE:MULTIPLE в Configuration Properties > Linker > Command Line. Подробнее о ней можно прочитать на сайте MSDN.
- И, наконец, можно указать, куда сохранять скомпилированную dll. Для этого перейдем в Configuration Properties > Linker > General > Output Filename и укажем там путь к папке \ext установленного PHP. Должно получиться что-нибудь такое: «D:\Program Files\php-5.3.6-Win32-VC9-x86\ext\$(ProjectName).dll».
Предисловие
Не так давно проект, на котором я работаю в данный момент, начал использовать модульную систему ES2015
Я не буду заострять внимание на этой технологии JavaScript, т.к статья совсем не об этом, а о том как технология сподвигла меня к одной мысли
Как многие знают, ES2015 Modules представляют собой импортирование/экспортирование скриптов крайне схожее по синтаксису с и многими другими языками программирования. Пример:
Все, кто интересовался модулями JavaScript знают, что импортирование и экспортирование возможно только на верхнем уровне модуля (файла с кодом).
Следующий грубый пример кода вызовет ошибки:
В отличие от ES2015 Modules — в модульной системе импортирование и экспортирование возможны на любом уровне вложенности.
Аналогичный код на не вызовет ошибку:
Преимущество такого способа в том, что модули необходимые в обработчике явно импортированы внутри и не засоряют пространство имен модуля (особенно актуально, если импортируемый модуль нужен только в одном обработчике). Так же появляется возможность отложенного экспортирования данных модуля.
Основные минусы:
- Об отсутствии модуля вы узнаете только во время вызова соответствующего обработчика
- Путь к импортироемому модулю может измениться, что приведет к изменению в каждом месте импортирования (например, в вашем модуле, в различных обработчиках используется и вы решили до 4.x версии, где подключать нужно ).
PHP include Examples
Example 1
Assume we have a standard footer file called «footer.php», that looks like this:
<?phpecho «<p>Copyright © 1999-» . date(«Y») . » W3Schools.com</p>»;?>
To include the footer file in a page, use the statement:
Example
<html>
<body>
<h1>Welcome to my home page!</h1>
<p>Some text.</p><p>Some more text.</p><?php include ‘footer.php’;?>
</body>
</html>
Example 2
Assume we have a standard menu file called «menu.php»:
<?phpecho ‘<a href=»/default.asp»>Home</a> -<a href=»/html/default.asp»>HTML Tutorial</a> -<a href=»/css/default.asp»>CSS Tutorial</a> -<a href=»/js/default.asp»>JavaScript Tutorial</a> -<a href=»default.asp»>PHP Tutorial</a>’;?>
All pages in the Web site should use this menu file. Here is how it can be done
(we are using a <div> element so that the menu easily can be styled with CSS later):
Example
<html>
<body>
<div class=»menu»><?php include ‘menu.php’;?></div>
<h1>Welcome to my home page!</h1><p>Some text.</p><p>Some more text.</p>
</body>
</html>
Example 3
Assume we have a file called «vars.php», with some variables defined:
<?php
$color=’red’;
$car=’BMW’;
?>
Then, if we include the «vars.php» file, the variables can be used in the calling file:
Example
<html>
<body>
<h1>Welcome to my home page!</h1>
<?php include ‘vars.php’;
echo «I have a $color $car.»;?>
</body>
</html>
The include_once and require_once Statements
If you accidentally include the same file (typically functions or classes files) more than one time within your code using the or statements, it may cause conflicts. To prevent this situation, PHP provides and statements. These statements behave in the same way as and statements with one exception.
The and statements will only include the file once even if asked to include it a second time i.e. if the specified file has already been included in a previous statement, the file is not included again. To better understand how it works, let’s check out an example. Suppose we’ve a ‘my_functions.php’ file with the following code:
Run this code
Here’s is the PHP script within which we’ve included the ‘my_functions.php’ file.
Run this code
When you run the above script, you will see the error message something like this: «Fatal error: Cannot redeclare multiplySelf()». This occurs because the ‘my_functions.php’ included twice, this means the function is defined twice, which caused PHP to stop script execution and generate fatal error. Now rewrite the above example with .
Summary
- Single HTML code such as headers, footers, side bars etc. can be shared across many pages. This makes it easy to update the website by just updating a single file.
- PHP code such as database configuration settings, custom functions etc. can be shared across many pages ensuring the website/application uses the same settings.
- Comments are used to help understand source code. They are for human understanding
- Single line comment statements start with double forward slashes //.
- Multi-line comment statements are enclosed between /* statements */.
- The “include, include_once, require and require_once” statements are used to include files.
- Include_once/require_once is ignored if the requested file has already been included using any of the four statements.
- The “include” statement issues a warning and continues with the execution if the requested file has not been found.
- The require statement raises a fatal error and stops the script execution.
- The “include” statement should be in most cases except in situations where without the requested file to be include, the entire script cannot run.
PHP включают и требуют заявления
Можно вставить содержимое одного файла PHP в другой файл PHP (до его выполнения сервером), с инструкцией include или требовать.
Операторы include и требуют идентичны, за исключением сбоя:
- произведет фатальную ошибку (е_компиле_еррор) и остановит сценарий
- только выдаст предупреждение (е_варнинг) и сценарий продолжит
Таким образом, если вы хотите, чтобы выполнение было продолжаться и показывать пользователям выходные данные, даже если включаемый файл отсутствует, используйте инструкцию include. В противном случае, при использовании фреймворка, CMS или сложного кода PHP-приложения, всегда используйте инструкцию требовать для включения ключевого файла в поток выполнения. Это поможет избежать ущерба для безопасности и целостности приложения, только в случае, если один ключевой файл случайно отсутствует.
В том числе файлы экономит много работы. Это означает, что можно создать стандартный заголовок, нижний колонтитул или файл меню для всех веб-страниц.
Затем, когда заголовок необходимо обновить, можно обновить только файл заголовка include.
Ответ 4
При использовании require_once() можно использовать его в файле для включения другого файла, когда вызываемый файл нужен только один раз в текущем файле. Здесь в примере у меня есть файл test1.php.
<?php
echo «Сегодня:».date(«Y-m-d»);
?>
И в другом файле, который я назвал test2.php
<?php
require_once(‘test1.php’);
require_once(‘test1.php’);
?>
В данном примере требуется файл test1 дважды, но файл будет включать test1 один раз и повторный вызов будет просто проигнорирован. И без остановки скрипта выведет результат один раз.
При использовании include_once() можно использовать его в файле для включения другого файла, когда вызываемый файл нужен более одного раза в текущем файле. Здесь в примере у меня есть файл с именем test3.php.
<?php
echo «Сегодня:».date(«Y-m-d»);
?>
И в другом файле, который я назвал test4.php
<?php
include_once(‘test3.php’);
include_once(‘test3.php’);
?>
В этом примере включение файла test3 включит файл один раз и остановит дальнейшее выполнение скрипта.
Другие решения
Некоторые вещи, которые следует иметь в виду, когда требуются файлы:
- Вы должны иметь правильный путь.
- Файл должен иметь разрешения на чтение.
- Зависимости должны быть загружены в первую очередь. Если класс расширяет реферат, имеет интерфейсы или признаки, они должны быть загружены до достижения объявления класса. Аналогично, если зависимости также имеют зависимости, они также должны быть загружены до загрузки самих зависимостей.
Согласно вашей информации, № 3, кажется, ваша проблема. Родительский класс должен быть загружен до объявления дочернего класса.
хорошая практика, чтобы сделать это проще:
- Объявите константы, которые сопоставляются с корнем вашего приложения, библиотеками и т. Д., Прежде чем вам потребуются различные файлы, поэтому вам не потребуется использовать сложную навигацию для их поиска.
- Используйте автозагрузчик, предпочтительно psr-0 или psr-4-совместимый.
Быстрый способ проверки (достаточно надежно):
Лучший способ:
Решение
Поскольку у вас уже были опечатки в ваших примерах ранее, я очень подозреваю, что это хороший реальный пример.
- Например, в сообщении об ошибке отсутствует расширение.
- Кроме того, сообщение об ошибке, которое вы получили бы, не произойдет, если не может быть найден, потому что это потерпит неудачу как фатальная ошибка в первую очередь.
Ваш источник в порядке, единственная причина, по которой вы получите сообщение об ошибке, это если есть другой файл с именем который вы также включили успешно, и у него нет этого определения класса.
Если это не та проблема, с которой вы столкнулись, вам нужно сделать еще одну попытку написать этот вопрос с помощью реального работающего кода. Попробуйте немного упростить ваши вещи и дать нам то, что мы можем выполнить в наших собственных системах.
Например, это работает для меня:
Ticket1.php
Ticket2.php
Работает либо или же не дает мне ошибок.
Одна вещь, которую вы должен обратите внимание, и это может быть связано с каталогом, из которого вы включаете. Если третий сценарий включает из другого каталога, это не удастся .
потому что ток каталог для PHP всегда является каталогом первого скрипта, который вы запустили
Если третий сценарий включает из другого каталога, это не удастся .. потому что ток каталог для PHP всегда является каталогом первого скрипта, который вы запустили.
Чтобы убедиться, что это не проблема, включите файл следующим образом:
магическая константа PHP, которая всегда содержит полный путь к каталогу файла, в котором вы используете константу
PHP include vs. require
The statement is also used to include a file into the PHP code.
However, there is one big difference between include and require; when a
file is included with the statement and PHP cannot find it, the script
will continue to execute:
Example
<html>
<body>
<h1>Welcome to my home page!</h1>
<?php include ‘noFileExists.php’;
echo «I have a $color $car.»;?>
</body>
</html>
If we do the same example using the statement, the
echo statement will not be executed because the script execution dies after the
statement returned a fatal error:
Example
<html>
<body>
<h1>Welcome to my home page!</h1>
<?php require ‘noFileExists.php’;
echo «I have a $color $car.»;?>
</body>
</html>
Use when the file is required by the application.
Use when the file is not required and application should continue when file is not found.