如何要求 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,如果包含的代码很大并且可以在方法中切片。