0

クラスパラメータまたはグローバル変数で参照を返す方法はありますか?これを試してみます

class test{

  public static $var;

  public static function get(&$ref){

    $ref = self::$var;

  }

}

test::get($ref);
$ref = 'test';
var_dump(test::$var);

これは基本的な例です。この例は別の方法で使用できますが、原則を守る必要があります。


これは私の関数です、ここで変数への参照に関する問題があります

class mySession{

    public static function issetKeys(){

      $keys = func_get_args();

      $session = &$_SESSION;
      $c = 0;

      if (is_array($keys)){
        foreach ($keys as $val){

          if (isset($session[$val])){
            $session = &$session[$val];
            $c++;
          }
          else break;

        }
      }

      return $c == count($keys);

    }

    public static function &get(){

      $keys = func_get_args();

      $session = &$_SESSION;

      if (is_array($keys)){
        foreach ($keys as $val){

          if (!isset($session[$val])) $session[$val] = Array();
          $session = &$session[$val];

        }
      }

      return $session;

    }

  }

  function getValue(){

    if (!mySession::issetKeys('p1', 'p2')){
      $session = mySession::get('p1', 'p2');
      $session = 'string';
    }

    return mySession::get('p1', 'p2');

  }

  print_r($_SESSION);

ただし、変数は$_SESSIONに保存されません

4

2 に答える 2

1

いいえ、なぜあなたはそのようなことをするのですか?

パブリック静的変数にアクセスする場合は、次のように記述します。

test::$var = "Hello there handsome";

上記の場合、の参照this::$varを$ refに渡さないので、$refへの参照にthis::$varの値が含まれるようにします。PHPはCではないため、PHPで不要な場合は、通常、参照を避ける必要があります。

于 2012-06-01T07:22:27.597 に答える
0

一般的な場合、パラメーターは、パラメーターが渡された関数の期間中のみ存在します。関数が戻ると、呼び出しスタックが巻き戻され、パラメーターが消えます。つまり、呼び出しスタックに存在していた変数への参照は無効になります(解放されたメモリを指しているため、何かが含まれている可能性があります)。それ以外は完全に。)

とはいえ、パラメータへの参照を返すこと可能ですが、実際にスタックに存在する変数(つまり、参照によって渡されなかった変数)への参照を返そうとすると機能しません。

$myGlobal = 10;

// Note the & before the function name
function &returnReference(&$x) {
    return $x;
}

// Note the & before the function call
$someValue = &derp($myGlobal);
echo $myGlobal;

$someValue = 0;
echo $myGlobal;
于 2012-06-01T13:59:39.737 に答える