PHP函数返回一个引用变量

时间:2010-01-05 00:45:53

标签: php reference variables return

我正在尝试编写一个返回对PDO对象的引用的函数。想要引用的原因是,由于某种原因,如果PDO对象在一个页面加载中被调用两次,它将返回相同的对象而不是初始化一个新对象。这不傻,是吗? :/

function &getPDO()
{
   var $pdo;

   if (!$pdo)
   {
      $pdo = new PDO...

      return $pdo;
   }
   else
   {
      return &pdo;
   }
}

像这样的东西

4 个答案:

答案 0 :(得分:3)

使用static $pdo;

function getPDO()
{
   static $pdo;

   if (!$pdo)
   {
      $pdo = new PDO...
   }

   return $pdo;

}

答案 1 :(得分:2)

对象始终通过PHP引用传递。例如:

class Foo {
  public $bar;
}

$foo = new Foo;
$foo->bar = 3;
myfunc($foo);
echo $foo->bar; // 7

function myfunc(Foo $foo) {
  $foo->bar = 7;
}

它只是通过值传递的非对象(标量,数组)。请参阅References Explained

关于您的功能,您需要将变量设为静态。在PHP 5中不推荐使用var。所以:

function getFoo() {
  static $foo;
  if (!$foo) {
    $foo = new Foo;
  }
  return $foo;
}

不需要和号。

同样请参阅Objects and references

答案 2 :(得分:1)

要引用变量$foo,请执行以下操作:

$bar =& $foo;

然后return $ bar。

答案 3 :(得分:0)

你会这样写的

function getPDO()
{
   static $pdo;

   if (!$pdo) {
      $pdo = new PDO...
   }

   return $pdo;
}