如何要求 php 文件传递参数
how to require a php file passing parameters
我有一个函数可以执行某些操作(它包含在我的文件中 php)。
该函数应该需要一个 php 文件传递参数,但它失败了,我无法继续...
函数初始代码如下:
<?php
function write_pdf($orientation, $initrow, $rowsperpage)
{
ob_start();
require "./mypage.php?orient=$orientation&init=$initrow&nrrows=$rowsperpage";
$html = ob_get_clean();
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
...
...
“mypage.php”returns错误:
Notice:Undefined variable: orientation in
C:\wamp\www\htdocs\site\mypage.php on line 8
Notice:Undefined variable: initrow in
C:\wamp\www\htdocs\site\mypage.php on line 8
Notice:Undefined variable: rowsperpage in
C:\wamp\www\htdocs\site\mypage.php on line 8
有没有办法做这样的事情?
谢谢!
你可以这样做。
to_include.php
<?php
$orient = isset($_GET["orient"]) ? $_GET["orient"] : "portrait";
$init = isset($_GET["init"]) ? $_GET["init"] : 1;
echo "<pre>";
var_dump(
[
"orient"=>$orient,
"init"=>$init
]
);
echo "</pre>";
main.php
<?php
function include_get_params($file) {
$main = explode('?', $file);
$parts = explode('&', $main[1]);
foreach($parts as $part) {
parse_str($part, $output);
foreach ($output as $key => $value) {
$_GET[$key] = $value;
}
}
include($main[0]);
}
include_get_params("to_include.php?orient=landscape&init=100");
方法include_get_params,首先把字符串的主体部分分开,把文件和参数分开,通过?
之后,他将参数分成几部分并将所有这些都放在 $_GET 中
在 to_include 中,我们从 $_GET
中检索了参数
希望对你有所帮助。
你不需要传递参数,因为当你需要文件时,就像它在函数内部的代码一样,所以在函数中定义的任何变量在require之前,它都会存在并被定义在你需要的文件。因此,您可以直接在所需文件中使用变量 $orientation, $initrow, $rowsperpage.
另一种非常丑陋的方法是在 require 文件之前 将这些变量添加到 $_GET,假设您希望从 $_GET:
$_GET['orient'] = $orientation;
$_GET['init'] = $initrow;
$_GET['nrrows'] = $rowsperpage;
require './mypage.php';
而我推荐的方法是将你的包含文件代码封装在一个函数中,这样你就可以调用它传递参数。甚至做一个 class,如果包含的代码很大并且可以在方法中切片。
我有一个函数可以执行某些操作(它包含在我的文件中 php)。 该函数应该需要一个 php 文件传递参数,但它失败了,我无法继续...
函数初始代码如下:
<?php
function write_pdf($orientation, $initrow, $rowsperpage)
{
ob_start();
require "./mypage.php?orient=$orientation&init=$initrow&nrrows=$rowsperpage";
$html = ob_get_clean();
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
...
...
“mypage.php”returns错误:
Notice:Undefined variable: orientation in C:\wamp\www\htdocs\site\mypage.php on line 8
Notice:Undefined variable: initrow in C:\wamp\www\htdocs\site\mypage.php on line 8
Notice:Undefined variable: rowsperpage in C:\wamp\www\htdocs\site\mypage.php on line 8
有没有办法做这样的事情? 谢谢!
你可以这样做。
to_include.php
<?php
$orient = isset($_GET["orient"]) ? $_GET["orient"] : "portrait";
$init = isset($_GET["init"]) ? $_GET["init"] : 1;
echo "<pre>";
var_dump(
[
"orient"=>$orient,
"init"=>$init
]
);
echo "</pre>";
main.php
<?php
function include_get_params($file) {
$main = explode('?', $file);
$parts = explode('&', $main[1]);
foreach($parts as $part) {
parse_str($part, $output);
foreach ($output as $key => $value) {
$_GET[$key] = $value;
}
}
include($main[0]);
}
include_get_params("to_include.php?orient=landscape&init=100");
方法include_get_params,首先把字符串的主体部分分开,把文件和参数分开,通过? 之后,他将参数分成几部分并将所有这些都放在 $_GET 中 在 to_include 中,我们从 $_GET
中检索了参数希望对你有所帮助。
你不需要传递参数,因为当你需要文件时,就像它在函数内部的代码一样,所以在函数中定义的任何变量在require之前,它都会存在并被定义在你需要的文件。因此,您可以直接在所需文件中使用变量 $orientation, $initrow, $rowsperpage.
另一种非常丑陋的方法是在 require 文件之前 将这些变量添加到 $_GET,假设您希望从 $_GET:
$_GET['orient'] = $orientation;
$_GET['init'] = $initrow;
$_GET['nrrows'] = $rowsperpage;
require './mypage.php';
而我推荐的方法是将你的包含文件代码封装在一个函数中,这样你就可以调用它传递参数。甚至做一个 class,如果包含的代码很大并且可以在方法中切片。