Links to magic methods

Document __invoke()


git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@273160 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Jakub Vrana 2009-01-09 13:53:15 +00:00
parent b057f25813
commit ed5d5ba906

View file

@ -1,24 +1,23 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.20 $ -->
<!-- $Revision: 1.21 $ -->
<sect1 xml:id="language.oop5.magic" xmlns="http://docbook.org/ns/docbook">
<title>Magic Methods</title>
<para>
The function names
<literal>__construct</literal>,
<literal>__destruct</literal>
(see <link linkend="language.oop5.decon">Constructors and Destructors</link>),
<literal>__call</literal>,
<literal>__callStatic</literal>,
<literal>__get</literal>,
<link linkend="language.oop5.decon"><literal>__construct</literal>,
<literal>__destruct</literal></link>,
<link linkend="language.oop5.overloading.methods"><literal>__call</literal>,
<literal>__callStatic</literal></link>,
<link linkend="language.oop5.overloading.members"><literal>__get</literal>,
<literal>__set</literal>,
<literal>__isset</literal>,
<literal>__unset</literal>
(see <link linkend="language.oop5.overloading">Overloading</link>),
<literal>__sleep</literal>,
<literal>__wakeup</literal>,
<literal>__toString</literal>,
<literal>__set_state</literal> and
<link linkend="language.oop5.cloning">__clone</link>
<literal>__unset</literal></link>,
<link linkend="language.oop5.magic.sleep"><literal>__sleep</literal>,
<literal>__wakeup</literal></link>,
<link linkend="language.oop5.magic.tostring"><literal>__toString</literal></link>,
<link linkend="language.oop5.magic.invoke"><literal>__invoke</literal></link>,
<link linkend="language.oop5.magic.set-state"><literal>__set_state</literal></link> and
<link linkend="language.oop5.cloning"><literal>__clone</literal></link>
are magical in PHP classes. You
cannot have functions with these names in any of your
classes unless you want the magic functionality associated
@ -151,6 +150,43 @@ Hello
</para>
</sect2>
<sect2 xml:id="language.oop5.magic.invoke">
<title><literal>__invoke</literal></title>
<para>
The <literal>__invoke</literal> method is called when a script tries to
call an object as a function.
</para>
<note>
<para>
This feature is available since PHP 5.3.0.
</para>
</note>
<example>
<title>Using <literal>__invoke</literal></title>
<programlisting role="php">
<![CDATA[
<?php
class CallableClass {
function __invoke($x) {
var_dump($x);
}
}
$obj = new CallableClass;
$obj(5);
var_dump(is_callable($obj));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
int(5)
bool(true)
]]>
</screen>
</example>
</sect2>
<sect2 xml:id="language.oop5.magic.set-state">
<title><literal>__set_state</literal></title>
<para>