PHP Ссылка на статическую переменную - PullRequest
2 голосов
/ 15 февраля 2011

Я не уверен, возможно ли это вообще в PHP, но это то, что я пытаюсь сделать. В моем классе есть статическая переменная, которую я хочу использовать в качестве ссылки вне класса.

class Foo {

  protected static $bar=123;

  function GetReference() {

    return self::&$bar; // I want to return a reference to the static member variable.
  }

  function Magic() {

    self::$bar = "Magic";
  }
}

$Inst = new Foo;
$Ref = $Inst->GetReference();
print $Ref; // Prints 123
$Inst->DoMagic();
print $Ref; // Prints 'Magic'

Может ли кто-нибудь подтвердить, возможно ли это вообще или другое решение для достижения того же результата:

  • Переменная должна быть статической, поскольку класс Foo является базовым классом, и все производные должны иметь доступ к одним и тем же данным.
  • HTML необходим доступ к справочным данным класса, но он не может быть установлен без метода установки, поскольку класс должен знать, когда установлена ​​переменная.

Полагаю, это всегда можно решить с помощью глобальных переменных, объявленных вне класса, и некоторых дисциплин кодирования в качестве экстренного решения.

// Спасибо

[EDIT]
Да, я использую PHP 5.3.2

1 Ответ

3 голосов
/ 15 февраля 2011

В документации PHP содержится решение: Возвращение ссылок

<?php
class foo {
    protected $value = 42;

    public function &getValue() {
        return $this->value;
    }
}

$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myValue;
...