即使设置为全局,PHP也不能在函数之外使用函数var

即使设置为全局,PHP也不能在函数之外使用函数var,php,Php,这不符合vars的要求 <?php function myfunc(){ function gettime(){ $date = date('d-m-y h:i:s'); global $date; } function getURL(){ $url = $_SERVER['REQUEST_URI']; global $url; } function getrequest(){

这不符合vars的要求

<?php
function myfunc(){
    function gettime(){
        $date = date('d-m-y h:i:s');
        global $date;
    }
    function getURL(){
        $url = $_SERVER['REQUEST_URI'];
        global $url;
    }
    function getrequest(){
        $method = $_SERVER['REQUEST_METHOD'];
        $request = explode("/", substr(@$_SERVER['PATH_INFO'], 1));
        
        switch ($method) {
          case 'PUT': 
            $requestmethod = 'GET';
            break;
          case 'POST':
            $requestmethod = 'POST';
            break;
          case 'GET': 
            $requestmethod = 'GET';
            break;
          default:
          $requestmethod = 'unkown';
            break;
        }
        global $requestmethod;
    }
}
myfunc();
echo $requestmethod.$url.$date;

您是
声明
函数,但您不是
调用
函数

试试这个:

function gettime(){
    $date = date('d-m-y h:i:s');
    global $date;
}
function getURL(){
    $url = $_SERVER['REQUEST_URI'];
    global $url;
}
function getrequest(){
    $method = $_SERVER['REQUEST_METHOD'];
    $request = explode("/", substr(@$_SERVER['PATH_INFO'], 1));
    
    switch ($method) {
      case 'PUT': 
        $requestmethod = 'GET';
        break;
      case 'POST':
        $requestmethod = 'POST';
        break;
      case 'GET': 
        $requestmethod = 'GET';
        break;
      default:
      $requestmethod = 'unkown';
        break;
    }
    global $requestmethod;
}

function myfunc(){
    gettime(); // You invoke the function gettime, so it get executed
    getURL(); // You invoke the function getURL, so it get executed
    getrequest(); // You invoke the function getrequest, so it get executed
}

myfunc();
echo $requestmethod.$url.$date;

global
必须是第一个,否则调用时会覆盖它

例如:

function gettime(){
    global $date;
    $date = date('d-m-y h:i:s');
}
比照


如另一个答案所述,尽管您仍然需要调用函数。

您可以这样得到它:
将“全局”替换为“返回”

而不是使用
myfunc()初始化myFunc()并将其存储在变量中,如下所示

$myFunc = myfunc();
现在可以调用其中的所有变量和方法 例如:

echo $myFunc.gettime();

当我运行它的时候,我仍然一无所获,我的代码还有其他问题吗?我所说的什么都没有,echo返回什么都没有。你到底想实现什么?到目前为止,您尝试了什么来解决您的问题?你被困在哪里?已经从下面的每个人那里解决了(解决了这两个问题)经过测试,效果良好
echo $myFunc.gettime();