2012-04-22 11 views
0

関数の実行後に関数内の変数が破棄されますか?関数の実行後に関数内の変数が破棄されますか?

class B { 
    function C() { 
     $x = "123456"; 
     echo "XXX".$x; 
     // After this function is finished, will $x be destroyed by default to save memory in PHP? 
    } 
} 
class A { 
    function F1() { 
     return new Class_B(); 
    } 

    function F2() { 
     $this->F1()->C(); 
     // After this function is finished, will F1 be destroyed by default to save memory and CPU in PHP? 
    } 
} 
+3

はい、静的な変数にしないか、クラスのメンバーにしない限りそうなります。例えば'$ B :: x' –

+0

http://www.php.net/manual/en/features.gc.php PHPマニュアルのガベージコレクションの基礎。 – Mikk

答えて

0

については、$xについて:はい、B::C()の実行が終了するとガベージコレクションが行われます。 $this->F1()->C()について

F1方法自体が破壊されることはありませんが、それによって返さBのインスタンスが実行されているF2終了後に破棄されます。

0

はい、使用したメモリを再利用できるように「破棄」されます。

関連する問題