⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 language.oop5.reflection.html

📁 php的帮助文档,涉及到PHP的案例和基本语法,以及实际应用内容
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">interface&nbsp;</span><span style="color: #0000BB">Reflector<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">string&nbsp;__toString</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;</span><span style="color: #0000BB">string&nbsp;export</span><span style="color: #007700">()<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>    </div>   </div>  </div>  <div id="language.oop5.reflection.reflectionexception" class="sect2">   <h3 class="title"><b class="classname">ReflectionException</b></h3>   <p class="para">    <b class="classname">ReflectionException</b> extends the standard <a href="language.exceptions.html" class="link">Exception</a> and is thrown by Reflection    API. No specific methods or properties are introduced.   </p>  </div>  <div id="language.oop5.reflection.reflectionfunction" class="sect2">   <h3 class="title"><b class="classname">ReflectionFunction</b></h3>   <p class="para">    The <b class="classname">ReflectionFunction</b> class lets you    reverse-engineer functions.   </p>   <div class="informalexample">    <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">ReflectionFunction&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">ReflectionFunctionAbstract&nbsp;</span><span style="color: #007700">implements&nbsp;</span><span style="color: #0000BB">Reflector<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;private&nbsp;</span><span style="color: #0000BB">__clone</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">void&nbsp;__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">string&nbsp;name</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">string&nbsp;__toString</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;</span><span style="color: #0000BB">string&nbsp;export</span><span style="color: #007700">(</span><span style="color: #0000BB">string&nbsp;name</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">bool&nbsp;</span><span style="color: #007700">return)<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">string&nbsp;getName</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">bool&nbsp;isInternal</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">bool&nbsp;isDisabled</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">mixed&nbsp;getClosure</span><span style="color: #007700">()&nbsp;</span><span style="color: #FF8000">/*&nbsp;As&nbsp;of&nbsp;PHP&nbsp;5.3.0&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;</span><span style="color: #0000BB">bool&nbsp;isUserDefined</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">string&nbsp;getFileName</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">int&nbsp;getStartLine</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">int&nbsp;getEndLine</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">string&nbsp;getDocComment</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;array&nbsp;</span><span style="color: #0000BB">getStaticVariables</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">mixed&nbsp;invoke</span><span style="color: #007700">([</span><span style="color: #0000BB">mixed&nbsp;args&nbsp;</span><span style="color: #007700">[,&nbsp;...]])<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">mixed&nbsp;invokeArgs</span><span style="color: #007700">(array&nbsp;</span><span style="color: #0000BB">args</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">bool&nbsp;returnsReference</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">ReflectionParameter</span><span style="color: #007700">[]&nbsp;</span><span style="color: #0000BB">getParameters</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">int&nbsp;getNumberOfParameters</span><span style="color: #007700">()<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">int&nbsp;getNumberOfRequiredParameters</span><span style="color: #007700">()<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>    </div>   </div>   <p class="para">    Parent class <b class="classname">ReflectionFunctionAbstract</b> has the    same methods except <b>invoke()</b>,    <b>invokeArgs()</b>, <b>export()</b> and    <b>isDisabled()</b>.   </p>   <blockquote><p><b class="note">Note</b>:     <span class="simpara">     <b>getNumberOfParameters()</b> and     <b>getNumberOfRequiredParameters()</b> were added in PHP     5.0.3, while <b>invokeArgs()</b> was added in PHP 5.1.0.    </span>   </p></blockquote>   <p class="para">    To introspect a function, you will first have to create an instance    of the <b class="classname">ReflectionFunction</b> class. You can then call    any of the above methods on this instance.   </p>   <div class="example">    <p><b>Example #2 Using the <b class="classname">ReflectionFunction</b> class</b></p>    <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/**<br />&nbsp;*&nbsp;A&nbsp;simple&nbsp;counter<br />&nbsp;*<br />&nbsp;*&nbsp;@return&nbsp;&nbsp;&nbsp;&nbsp;int<br />&nbsp;*/<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">counter</span><span style="color: #007700">()&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;</span><span style="color: #0000BB">$c&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$c</span><span style="color: #007700">++;<br />}<br /><br /></span><span style="color: #FF8000">//&nbsp;Create&nbsp;an&nbsp;instance&nbsp;of&nbsp;the&nbsp;ReflectionFunction&nbsp;class<br /></span><span style="color: #0000BB">$func&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">ReflectionFunction</span><span style="color: #007700">(</span><span style="color: #DD0000">'counter'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;Print&nbsp;out&nbsp;basic&nbsp;information<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"===&gt;&nbsp;The&nbsp;%s&nbsp;function&nbsp;'%s'\n"</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;declared&nbsp;in&nbsp;%s\n"</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines&nbsp;%d&nbsp;to&nbsp;%d\n"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$func</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">isInternal</span><span style="color: #007700">()&nbsp;?&nbsp;</span><span style="color: #DD0000">'internal'&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'user-defined'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$func</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getName</span><span style="color: #007700">(),<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$func</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getFileName</span><span style="color: #007700">(),<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$func</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getStartLine</span><span style="color: #007700">(),<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$func</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getEndline</span><span style="color: #007700">()<br />);<br /><br /></span><span style="color: #FF8000">//&nbsp;Print&nbsp;documentation&nbsp;comment<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"---&gt;&nbsp;Documentation:\n&nbsp;%s\n"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">var_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$func</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getDocComment</span><span style="color: #007700">(),&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">//&nbsp;Print&nbsp;static&nbsp;variables&nbsp;if&nbsp;existant<br /></span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$statics&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$func</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getStaticVariables</span><span style="color: #007700">())<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"---&gt;&nbsp;Static&nbsp;variables:&nbsp;%s\n"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">var_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$statics</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">));<br />}<br /><br /></span><span style="color: #FF8000">//&nbsp;Invoke&nbsp;the&nbsp;function<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"---&gt;&nbsp;Invokation&nbsp;results&nbsp;in:&nbsp;"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$func</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">invoke</span><span style="color: #007700">());<br /><br /><br /></span><span style="color: #FF8000">//&nbsp;you&nbsp;may&nbsp;prefer&nbsp;to&nbsp;use&nbsp;the&nbsp;export()&nbsp;method<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"\nReflectionFunction::export()&nbsp;results:\n"</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #0000BB">ReflectionFunction</span><span style="color: #007700">::</span><span style="color: #0000BB">export</span><span style="color: #007700">(</span><span style="color: #DD0000">'counter'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>    </div>   </div>   <blockquote><p><b class="note">Note</b>:     <span class="simpara">     The method <b>invoke()</b> accepts a variable number of     arguments which are passed to the function just as in     <a href="function.call-user-func.html" class="function">call_user_func()</a>.    </span>   </p></blockquote>  </div>  <div id="language.oop5.reflection.reflectionparameter" class="sect2">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -