PHP magic methods

I can't ever recall the magic methods of PHP and sometimes google doesn't seem to display them as the first couple of hits, so for my own sake, a cheat-sheet of them with a few notes:

  • __construct(/* arguments */) : called on construction of the object
  • __destruct() : called when the object is destroyed
  • __get(\$var) : called when the object does NOT contain the property \$var or when \$var is private or protected. ALSO called on empty(\$object->\$var) if \$var is private or protected
  • __set(\$var, \$value) : called when the object does NOT contain the property \$var or when \$var is private or protected.
  • __call(\$method, \$args) : called when the object does NOT contain the method \$method. Unlike __get and __set it doesn't hide private or protected methods.
  • __callStatic(\$method, \$args) : equivalent to __call but for static calls. New as of 5.3.
  • __clone() : called on clone object.
  • __isset(\$var):called when empty() or isset() is called on a non-existing or private or protected property.
  • __unset(\$var) : called on unset when object does NOT contain \$var or \$var is private or protected.
  • __sleep() : called if serialize() is called on the object. Should return array of properties that will be serialized before the object is destroyed. Allows object to do cleanup before serialization.
  • __wakeup() : called if unserialize() is called on the object. Notifies the object that it is being brought back to life.
  • __toString() : let's a class decide what to return if it is converted to string.
  • __invoke(/* arguments */) : called if the objectt is called as a function. New as of 5.3
  • __set_state(\$array) : static method called for classes exported by var_export.

And, the manual page describing the methods.

social