从函数中的外部函数获取变量

时间:2015-06-10 09:35:11

标签: php function variables

我正在尝试访问函数之外的变量。

这是我的测试代码:

Android Studio V1.2.1.1
 compileSdkVersion 22
 buildToolsVersion "22.0.0"
 minSdkVersion 14
 targetSdkVersion 22

我知道我可以这样做:

function testPARENT() {

$var1 = 'TEST1';
$var2 = 'TEST2';

list_LOOP();
}

function list_LOOP() {

echo $var1

}

但这不是我想要做的,因为我有很多变量,而且该函数应该用作一种包含函数。

2 个答案:

答案 0 :(得分:1)

有许多(php)设计模式。 为此你可以使用Singleton(实际上这是一个反模式)。

单身人士的例子:

<?php
class Registry{
   private static $instance = null;

   private $storage = array();

   public static function getInstance(){
      if( self::$instance === null ){
         self::$instance = new self();
      }
      return self::$instance;
   }

   public function set( $name, $value ){
       $this->storage[$name] = $value;
   }

   public function get( $name ){
       if( isset( $this->storage[$name] )) {
           return $this->storage[ $name ];
       }
       return null;
   }
}

// usage example
$storage = Registry::getInstance();
$storage->set('test', 'testing!');

echo $storage->get('test');

function testing($storage) {
    $storage->set('test', 'TESTING123');
    return $storage->get('test');
}

echo testing($storage);
?>

我在下面添加了一些链接,其中包含一些额外信息。

http://www.phptherightway.com/pages/Design-Patterns.html

答案 1 :(得分:0)

试试这段代码:

function testPARENT() {
   global $var1;
   $var1 = 'TEST1';
   $var2 = 'TEST2';
   list_LOOP();
}

function list_LOOP() {    
  global $var1;    
   echo $var1;    
}
testPARENT();

要完成此操作,您必须将$var1变量定义为全局