如何要求一个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文件传递参数的主要内容,如果未能解决你的问题,请参考以下文章

命令行运行PHP文件时如何传递参数?

js如何接受?传递的参数?

如何在批处理文件中传递参数

如何使PHP程序执行页面跳转时传递大量参数

如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?

试图将三个参数从一个 php 文件传递​​到另一个