PHP 如何将控制器 url 调用转换为函数


PHP How to convert a controller url call to a function

我正在尝试将两段代码集成在一起。现有代码已生成哈希代码,并使用此 URL 调用该函数

 header(Location:  http://".$_SERVER['HTTP_HOST']."/subfolder/controller.php?document&validate&patient_id=".$pid."&document_id=".$nid."&process=true");

有没有另一种方法可以在不执行标头重定向的情况下执行此功能,因为标头重定向导致代码在重定向时停止处理。

在控制器文件中,只有一行回显控制器::act($_GET);

我试图将其转换为函数。我试过了。

   include_once controller.php  //class file
  function hash_tag($pid, $nid){
           $filetag = "document&validate&patient_id=".$pid."&document_id=".$nid."&process=true";
      echo Controller::act($filetag);

 }
 hashtag($pid, $nid);

任何帮助将不胜感激。控制器.class.php文件的代码可以在这里看到https://github.com/juggernautsei/Drag-N-Drop/blob/master/library/classes/Controller.class.php

您没有在controller.php中发布代码,但考虑到您的第一种方法是通过 url 参数访问该代码,我假设您正在该代码中执行变量作为GET变量(例如:$_GET['patient_id'])。

如果是这种情况,现在您正在通过include_once执行该代码,您必须更改在controller.php中设置变量的方式,因为没有更多的$_GET

您正在尝试将字符串从 GET 请求传递到控制器。但是 Contract::act() 适用于数组 ($_GET 是一个超全局数组)。

在函数内部构建一个数组并将函数的参数分配给它,然后将其传递给控制器,如下所示:

include_once 'controller.php';
function hash_tag($pid, $nid)
{
    $array = array();
    $array['document'] = 1;
    $array['validate'] = 1;
    $array['patient_id'] = $pid:
    $array['document_id'] = $nid;
    $array['process'] = 1;
    echo Controller::act($array);
} 
hashtag($pid, $nid);