5

I wrote a little class for storing global variables/functions. My question is - is it necessary to destroy the class object after the script has finished? or will PHP destroy that object itself?

Here's my code:

$web=new c_web("myWeb");
$web->loadTemplate("/!framework/admin/template.htm");
$web->doStuff();
// script has finished - destroying required here?

In case I need to destroy it, how can I do that?

halfer
  • 19,824
  • 17
  • 99
  • 186
Fuxi
  • 7,611
  • 25
  • 93
  • 139

3 Answers3

9

If the script finishes, the memory is released. You're ready as is :)

Nanne
  • 64,065
  • 16
  • 119
  • 163
  • great - thanks! and what about if a script will will be terminated by an error? will all variables (database ..) be destroyed aswell? – Fuxi Apr 08 '11 at 11:34
  • Well, the database connection might need a 'close', but in most situations you only need to worry about this when you need more memory DURING exection. So if you load X amount of data in an object, and then you want to do it again. But basically: don't worry, code happy :) – Nanne Apr 08 '11 at 11:46
4

No, you do not need to destroy any variable yourself (and an object is a variable) : as soon as your PHP script reaches its end, its variables will be freed, and the correspondig memory released.

Actually, a variable gets destroyed automatically when the end of its variable's scope is reached -- and, when you reach end of script, it's the end of the scope introduced by that script's execution.


(Answering a comment to another answer)
Of course, when your script is ended because of an error, the same thing happens : the variables are freed, and the memory released.

Pascal MARTIN
  • 395,085
  • 80
  • 655
  • 663
4

As @Nanne sayd, if the script finished the memory is released, however in some circumstances you might whant to unset($web); .

Poelinca Dorin
  • 9,577
  • 2
  • 39
  • 43