Как передать переменную через функцию require() или include() php?
когда я использую это:
require("diggstyle_code.php?page=$page_no");
предупреждение: не удалось открыть поток: нет ошибки в C:\xampp\htdocs\4ajax\gallery_core.php в строке 198
и ошибка:
Failed opening required 'diggstyle_code.php?page=1' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\4ajax\gallery_core.php on line 198
значение переменной $page_no
собирается заранее.
Но если я опускаю '?page=$page_no part'
из аргумента функции require, то не отображается ошибка или предупреждение.
Мне нужно передать переменную, когда я использую функцию require().
Ответы
Ответ 1
require()
и include()
откроет файл, соответствующий получаемому пути/имени.
Это означает, что с вашим кодом у вас должен быть файл с именем diggstyle_code.php?page=1
на вашем диске. Это явно не так, поэтому он терпит неудачу.
Указание страницы переменной в руководстве PHP:
Объем переменной - это контекст, в котором он определен. По большей части все переменные PHP имеют только одну область. В эту единую область охвата включены и требуемые файлы.
В вашем случае вам не нужно передавать переменную. Если у вас есть переменная в текущем script, она также будет существовать в script, которую вы включаете, вне функций, у которых есть свой собственный объем.
В главном script, вы должны иметь:
$page_no = 10;
require 'diggstyle_code.php';
И в diggstyle_code.php
:
echo $page_no;
// Or work with $page_no the way you have to
Помните, что включение/требование файла в точности совпадает с копированием в его содержимое в нужную ему строку.
Ответ 2
это должно работать, но это довольно грязный взлом:
$_GET['page'] = $page_no;
require('diggstyle_code.php');
вы, вероятно, захотите реорганизовать свой код для использования функций и/или объектов и вызывать их из своих файлов вместо их включения (предупреждение о спагетти)
Ответ 3
require
не вытаскивает файл с веб-сервера - вместо этого он должен ссылаться на файл в файловой системе.
Вызов include
или require
просто говорит PHP вставлять содержимое данного файла в ваш код в этом месте, не более того.
Ответ 4
require()
не выполняет HTTP-вызов. Все, что он делает - это открыть файл с диска и включить код в позицию вызова. Таким образом, достаточно простых локальных переменных.
Ответ 5
Если ваша переменная глобальна, нет необходимости "передавать" ее, она уже есть:
Область переменных PHP.
Тогда ответ будет, не делайте ничего, если $page_no существует в файле, который вы вызываете require(), он будет доступен во включенном файле.
Ответ 6
require, require_once, include и include_once попытаться включить файлы из файловой системы в текущий файл.
Поскольку нет файлов с именем diggstyle_code.php? page = 1, вполне логично, что PHP не может найти его.
Вы не можете передавать значения таким образом, однако любая переменная, объявленная в текущем файле, будет доступна во входящих файлах.
Ответ 7
У меня была эта проблема, и я заметил, что если вы используете http://в своем URL-адресе, то это не работает.
Ответ 8
Если я правильно понял, вам нужно вызвать файл diggstyle_code.php
, передающий аргумент, чтобы никто не мог вызвать этот файл и заставить его работать, а не ваш основной файл. Я прав?
Таким образом, предположим, что ваш "main.php" имеет строки
require("diggstyle_code.php?page=$page_no");
это означает, что:
если кто-то называет "main.php", запускается diggstyle_code.php
.
Но если кто-либо каким-либо образом называет напрямую diggstyle_code.php
, он/она ничего не получает.
Если я правильно понимаю, способ достичь этого - включить в основной файл переменную или константу, которая будет ограничена diggstyle_code.php
Таким образом, например: 'main.php'
<?php
define("_VERIFICATION_", "y");
require("diggstyle_code.php");
?>
и теперь diggstyle_code.php
<?php
if ( _VERIFICATION_ == "y" ) {
//Here the code should be executed
} else {
// Something else
}
?>
Ответ 9
Хотя этот вопрос старый, есть другой вариант, который я использую, который отсутствует в этом потоке. Вы можете вернуть функцию из требуемого файла, который принимает аргументы, которые вы хотите передать:
return function(array $something) {
print_r($something);
}
И назовите его аргументами, когда вы require
это:
require('file.php')(['some', 'data']);
// or:
$context = require('file.php');
$context(['some', 'data']);