: $ret = &bar(); つまり、定義および使用するときに & 記号を追加する必要があります。 5、オブジェクトの割り当てと転送 注: PHP4 と PHP5 では、オブジェクト リソースの割り当てと受け渡しに違いがあります。 PHP4の場合:
PHP5:
備考: テスト中に見つかったもの: $a = new Object(); $b = $a の場合、$a->attr = 12; の場合、最終結果は $a->attr と $b->attr の両方になります。 13に等しい、想像したように独立しているのではなく。 $a->attr と $b->attr は深くコピーされていない可能性がありますが、依然として同じメモリの異なるマッピングです。 $a = new Object(); $b = &$a; の場合、最初から最後まで実際のオブジェクトは 1 つだけであり、$a と $b は単なるマッピングであるため、そのような疑いはありません。 6、未設定および =null unset($a) と $a=null を使用した場合の結果は異なります。 このメモリ ブロックに $a のマッピングが 1 つしかない場合、unset($a) は $a=null と同等になり、メモリの参照カウントは 0 になり、自動的にリサイクルされます。 メモリのブロックに $a と $b の 2 つのマッピングがある場合、 unset($a) では $a=null が発生し、 $b は変更されず、 $a=null では $a=$b=null が発生します。 原因分析: 変数に null を代入すると、その変数に対応するメモリ ブロックの参照カウントが直接 0 に設定され、自動的にリサイクルされます。 |