如何在全局范围内使用在本地范围内创建的变量“without assigning”

时间:2012-04-24 13:31:55

标签: php function scope global local

我正在尝试使用在本地范围内创建的变量,而不在全局中分配该变量。看看我的意思:

<?
function foo(){
    $bar = inside;
}
foo();
echo $bar; // It will give an error that $bar is not assigned
?>

现在你可能已经理解我正在尝试的东西......?是的我想在没有在全球范围内分配它的情况下回应那个$ bar。

一些编码示例很受尊重。

先谢谢

3 个答案:

答案 0 :(得分:2)

使用返回值。

<?php
function foo(){
    $bar = "inside";
    return $bar;
}
$bar = foo();
echo $bar;
?>

答案 1 :(得分:1)

唯一可能的方法是使用$GLOBALS超全局(至少不返回它):

function foo(){
  $GLOBALS['bar'] = 'baz';
}

foo();
echo $bar;

否则,您首先要考虑在全局范围内定义它,然后使用global指定您需要访问它:

$bar = null;

function foo(){
  global $bar;

  $bar = 'baz';
}

foo();
echo $bar;

更好的选择是使用范围保留在对象中的对象,您仍然可以保留代码的结构和完整性:

class Foo
{
  var $bar = null;

  function Bar()
  {
    $this->bar = 'baz';
  }
}

$foo = new Foo();
$foo->Bar();
echo $foo->bar;

答案 2 :(得分:0)

如果您想从外部访问本地变量的内容,那么您有3个选项:

使用全局变量:通常不建议使用,而不是您正在寻找的内容。

返回该变量的值:

<?
function foo(){
    $bar = inside;
}
$outisde_bar = foo();
echo $outside_bar;
?>

使用引用的变量作为函数的属性:

<?
function foo(&$bar){
    $bar = inside;
}
foo($bar);
echo $bar;
?>

这有帮助吗?