как передать переменную через функцию require() или include() php?
когда я использую этот:
require("diggstyle_code.php?page=$page_no");
предупреждение: не удалось открыть поток: нет ошибки в C:xampphtdocs4ajaxgallery_core - ... php on line 198
и ошибка:
Failed opening required 'diggstyle_code.php?page=1' (include_path='.;C:xamppphpPEAR') in C:xampphtdocsajaxgallery_core.php on line 198
значение переменной $page_no
собирают заранее.
но если я опущу '?page=$page_no part'
из аргумента функции require не отображается ошибка или предупреждение.
мне нужно передать переменную, когда я использую функцию require ().
9 ответов
require()
и include()
откроет файл, соответствующий пути / имени, которое они получают.
что означает, что с вашим кодом у вас должен быть файл с именем diggstyle_code.php?page=1
на диске. Очевидно, что это не так, поэтому он терпит неудачу.
со ссылкой на переменная страница руководства по PHP:
область переменной-это контекст, в котором она определена. По большей части все переменные PHP имеют только одну область. эта область охватывает включенные и необходимые файлы, а также.
в вашем случае, вам не нужно проходить переменной. Если у вас есть переменная в текущем скрипте, она также будет существовать в скрипте, который вы включаете,вне функций, которые имеют свой собственный объем.
в вашем основном скрипте вы должны иметь:
$page_no = 10;
require 'diggstyle_code.php';
и diggstyle_code.php
:
echo $page_no;
// Or work with $page_no the way you have to
помните, что включение / требование файла точно так же, как копирование-вставка его содержимого в строку, которая требуется.
это должно работать, но это довольно грязный хак:
$_GET['page'] = $page_no;
require('diggstyle_code.php');
вы, наверное, хотите выполнить рефакторинг кода, чтобы использовать функции и/или объекты и вызывать их из ваших файлов, а не включая их (спагетти код оповещения)
require
не извлекает файл с веб-сервера - вместо этого он должен ссылаться на файл в файловой системе.
вызов include
или require
просто говорит PHP вставить содержимое данного файла в ваш код в этом месте, не более того.
Если ваша переменная является глобальной, нет необходимости "передавать"ее, она уже есть: область переменных PHP.
ответ тогда: ничего не делайте, если $page_no существует в файле, в котором вы вызываете require (), он будет доступен в включенном файле.
require()
не делает HTTP-вызов. Все, что он делает, это открыть файл с диска и включить код в положение вызова. Поэтому достаточно простых локальных переменных.
require, require_once, include и include_once попробуйте включить файлы из файловой системы в текущий файл.
Так как нет файлов с именем diggstyle_code.РНР?page=1, вполне логично, что PHP не может его найти.
вы не можете передавать значения таким образом, однако любая переменная, объявленная в текущем файле, будет доступна в включенных файлах.
если я правильно понял, вам нужно вызвать файл diggstyle_code.php
передача аргументов, так что никто не может назвать этот файл и заставить его работать, а не ваш основной файл. Я прав?
таким образом, предположим, что ваш "главный".php " имеет строки
require("diggstyle_code.php?page=$page_no");
это означает, что:
если кто-нибудь позвонит "main.РНР" получает 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
}
?>
хотя этот вопрос старый, есть еще один вариант, который я использую, который пропал из этой темы. Вы можете вернуть функцию из требуемого файла, которая принимает аргументы, которые вы хотите передать:
return function(array $something) {
print_r($something);
}
и вызовите его с аргументами, когда вы require
это:
require('file.php')(['some', 'data']);
// or:
$context = require('file.php');
$context(['some', 'data']);
У меня была эта проблема, и я заметил, что если вы используете http: / / в своем url-адресе, то он не работает