如何要求一个php文件传递参数
Posted
技术标签:
【中文标题】如何要求一个php文件传递参数【英文标题】:how to require a php file passing parameters 【发布时间】:2022-01-05 09:10:28 【问题描述】:我有一个做某事的函数(它包含在我的文件 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”返回错误:
注意:未定义的变量:方向在 C:\wamp\www\htdocs\site\mypage.php 第 8 行
注意:未定义变量:initrow in C:\wamp\www\htdocs\site\mypage.php 第 8 行
注意:未定义变量:rowsperpage in C:\wamp\www\htdocs\site\mypage.php 第 8 行
有没有办法做这样的事情? 谢谢!
【问题讨论】:
可以function write_pdf($orientation = 'landscape', $initrow = 0, $rowsperpage = 10)
但我需要 mypage.php 中的这些值。我会用值“调用” mypage.php(因为我有一个多次调用 write_pdf 的循环而改变),我会得到该页面的 html
你正在调用write_pdf()
,它调用了文件,不是吗?
mypage.php
(或minimal reproducible example)长什么样子?
【参考方案1】:
您不需要传递参数,因为当您需要文件时,就像它在函数内部的代码一样,因此在 require 之前在函数中定义的任何变量都将存在并在您的 required 中定义文件。因此,您可以在所需文件中直接使用变量 $orientation、$initrow、$rowsperpage。
另一种非常丑陋的方法是在需要文件之前将这些变量添加到 $_GET,假设您希望从 $_GET 中获取它们:
$_GET['orient'] = $orientation;
$_GET['init'] = $initrow;
$_GET['nrrows'] = $rowsperpage;
require './mypage.php';
我推荐的方法是将你包含的文件代码封装在一个函数中,这样你就可以调用它传递参数。甚至创建一个类,如果包含的代码很大并且可以在方法中切片。
【讨论】:
【参考方案2】:你可以这样做。 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 中检索参数
希望对你有所帮助。
【讨论】:
谢谢你们!很好的建议,我决定应用丑陋的版本,它很快就奏效了!多亏了!以上是关于如何要求一个php文件传递参数的主要内容,如果未能解决你的问题,请参考以下文章