5

我在使用全局变量时遇到了一些错误。我在全局范围内定义了一个 $var 并尝试在函数中使用它,但在那里无法访问它。请参阅下面的代码以获得更好的解释:

文件 a.php:

<?php

  $tmp = "testing";

  function testFunction(){
     global $tmp;
     echo($tmp);
  }

稍微介绍一下这个函数是如何被调用的。

文件 b.php:

<?php
  include 'a.php'
  class testClass{
    public function testFunctionCall(){
        testFunction();
    }
  }

上面的 'b.php' 使用以下方法调用:

$method = new ReflectionMethod($this, $method);
$method->invoke();

现在所需的输出是“测试”,但收到的输出是 NULL。

提前感谢您的帮助。

4

4 回答 4

4

您错过了调用函数并删除了protected关键字。

试试这个方法

<?php

  $tmp = "testing";

  testFunction(); // you missed this

  function testFunction(){  //removed protected
     global $tmp;
     echo($tmp);
  }

相同的代码但使用$GLOBALS,可以获得相同的输出。

<?php

$tmp = "testing";

testFunction(); // you missed this

function testFunction(){  //removed protected
    echo $GLOBALS['tmp'];
}
于 2013-09-17T11:19:38.727 回答
1

此受保护函数无法访问该变量。所以通过删除protected来使用。

<?php

  $tmp = "testing";

   function testFunction(){
     global $tmp;
     echo ($tmp);
  }
于 2013-09-17T11:20:03.613 回答
0

受保护的函数需要在这样的类中:

 Class SomeClass extends SomeotherClass {

   public static $tmp = "testing";

   protected function testFunction() {

      echo self::$tmp;

   }
}
于 2013-09-17T11:24:04.083 回答
0

我在这里遇到了同样的问题。在我使用的任何函数中都可以看到 $GLOBALS :

<?php

  $GLOBALS['tmp'] = "testing";

  function testFunction(){

     echo( $GLOBALS['tmp'] );
  }
于 2020-03-04T10:01:31.460 回答