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

📄 language.namespaces.rules.html

📁 php的帮助文档,涉及到PHP的案例和基本语法,以及实际应用内容
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head>  <title>Name resolution rules</title>  <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body><div style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="language.namespaces.html">Namespaces</a></div> <div class="next" style="text-align: right; float: right;"><a href="language.exceptions.html">Exceptions</a></div> <div class="up"><a href="language.namespaces.html">Namespaces</a></div> <div class="home"><a href="index.html">PHP Manual</a></div></div><hr /><div id="language.namespaces.rules" class="sect1">  <h2 class="title">Name resolution rules</h2>  <p class="para">   Names are resolved following these resolution rules:   <ol class="orderedlist">    <li class="listitem">     <span class="simpara">      All qualified names are translated during compilation according to current      import rules. In example, if the namespace A::B::C is imported, a call to       <code class="code">C::D::e()</code> is translated to <code class="code">A::B::C::D::e()</code>.     </span>    </li>    <li class="listitem">     <span class="simpara">      Unqualified class names are translated during compilation according to current      import rules (full name substituted for short imported name). In example, if       the namespace <i>A::B::C</i> is imported, <code class="code">new C()</code> is       translated to <code class="code">new A::B::C()</code>.     </span>    </li>    <li class="listitem">     <span class="simpara">      Inside namespace, calls to unqualified functions that are defined in the      current namespace (and are known at the time the call is parsed) are      interpreted as calls to these namespace functions, at compile time.     </span>    </li>    <li class="listitem">     <span class="simpara">      Inside namespace (say A::B), calls to unqualified functions that are not      defined in current namespace are resolved at run-time. Here is how a       call to function <i>foo()</i> is resolved:     </span>      <ol class="orderedlist">       <li class="listitem">        <span class="simpara">         It looks for a function from the current namespace:         <i>A::B::foo()</i>.        </span>       </li>       <li class="listitem">        <span class="simpara">         It tries to find and call the <em class="emphasis">internal</em> function         <i>foo()</i>.        </span>       </li>      </ol>      <span class="simpara">      To call a user defined function in the global namespace,       <i>::foo()</i> has to be used.     </span>    </li>    <li class="listitem">     <span class="simpara">      Inside namespace (say <i>A::B</i>), calls to unqualified class names are       resolved at run-time. Here is how a call to       <code class="code">new C()</code> is resolved:     </span>     <ol class="orderedlist">      <li class="listitem">       <span class="simpara">        It looks for a class from the current namespace:        <i>A::B::C</i>.       </span>      </li>      <li class="listitem">       <span class="simpara">        It tries to find and call the <em class="emphasis">internal</em> class        <i>C</i>.       </span>      </li>      <li class="listitem">       <span class="simpara">        It attemts to autoload <i>A::B::C</i>.       </span>      </li>     </ol>     <span class="simpara">      To reference a user defined class in the global namespace,       <code class="code">new ::C()</code> has to be used.     </span>    </li>    <li class="listitem">     <span class="simpara">      Calls to qualified functions are resolved at run-time. Here is how a call      to <i>A::B::foo()</i> is resolved:     </span>      <ol class="orderedlist">       <li class="listitem">        <span class="simpara">         It looks for a function <i>foo()</i> in the namespace         <i>A::B</i>.        </span>       </li>       <li class="listitem">        <span class="simpara">         It looks for a class <i>A::B</i> and call its static          method <i>foo()</i>. It will autoload the class if          necessary.        </span>       </li>      </ol>    </li>    <li class="listitem">     <span class="simpara">      Qualified class names are resolved in compile-time as class from corresponding      namespace. For example, <code class="code">new A::B::C()</code> refers to class       <b class="classname">C</b> from namespace <i>A::B</i>.     </span>    </li>   </ol>  </p>  <div class="example">   <p><b>Example #1 Name resolutions illustrated</b></p>   <div class="example-contents"><div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />namespace&nbsp;A</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">//&nbsp;function&nbsp;calls<br /><br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;first&nbsp;tries&nbsp;to&nbsp;call&nbsp;"foo"&nbsp;defined&nbsp;in&nbsp;namespace&nbsp;"A"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;then&nbsp;calls&nbsp;internal&nbsp;function&nbsp;"foo"<br /><br /></span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">();&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;calls&nbsp;function&nbsp;"foo"&nbsp;defined&nbsp;in&nbsp;global&nbsp;scope<br /><br />//&nbsp;class&nbsp;references<br /><br /></span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">B</span><span style="color: #007700">();&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;first&nbsp;tries&nbsp;to&nbsp;create&nbsp;object&nbsp;of&nbsp;class&nbsp;"B"&nbsp;defined&nbsp;in&nbsp;namespace&nbsp;"A"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;then&nbsp;creates&nbsp;object&nbsp;of&nbsp;internal&nbsp;class&nbsp;"B"<br /><br /></span><span style="color: #007700">new&nbsp;::</span><span style="color: #0000BB">B</span><span style="color: #007700">();&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;creates&nbsp;object&nbsp;of&nbsp;class&nbsp;"B"&nbsp;defined&nbsp;in&nbsp;global&nbsp;scope<br /><br />//&nbsp;static&nbsp;methods/namespace&nbsp;functions&nbsp;from&nbsp;another&nbsp;namespace<br /><br /></span><span style="color: #0000BB">B</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">();&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;first&nbsp;tries&nbsp;to&nbsp;call&nbsp;function&nbsp;"foo"&nbsp;from&nbsp;namespace&nbsp;"A::B"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;then&nbsp;calls&nbsp;method&nbsp;"foo"&nbsp;of&nbsp;internal&nbsp;class&nbsp;"B"<br /><br /></span><span style="color: #007700">::</span><span style="color: #0000BB">B</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">();&nbsp;</span><span style="color: #FF8000">//&nbsp;first&nbsp;tries&nbsp;to&nbsp;call&nbsp;function&nbsp;"foo"&nbsp;from&nbsp;namespace&nbsp;"B"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;then&nbsp;calls&nbsp;method&nbsp;"foo"&nbsp;of&nbsp;class&nbsp;"B"&nbsp;from&nbsp;global&nbsp;scope<br /><br />//&nbsp;static&nbsp;methods/namespace&nbsp;functions&nbsp;of&nbsp;current&nbsp;namespace<br /><br /></span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">();&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;first&nbsp;tries&nbsp;to&nbsp;call&nbsp;function&nbsp;"foo"&nbsp;from&nbsp;namespace&nbsp;"A::A"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;then&nbsp;tries&nbsp;to&nbsp;call&nbsp;method&nbsp;"foo"&nbsp;of&nbsp;class&nbsp;"A"&nbsp;from&nbsp;namespace&nbsp;"A"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;then&nbsp;tries&nbsp;to&nbsp;call&nbsp;function&nbsp;"foo"&nbsp;from&nbsp;namespace&nbsp;"A"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;then&nbsp;calls&nbsp;method&nbsp;"foo"&nbsp;of&nbsp;internal&nbsp;class&nbsp;"A"&nbsp;<br /><br /></span><span style="color: #007700">::</span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">();&nbsp;</span><span style="color: #FF8000">//&nbsp;first&nbsp;tries&nbsp;to&nbsp;call&nbsp;function&nbsp;"foo"&nbsp;from&nbsp;namespace&nbsp;"A"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;then&nbsp;calls&nbsp;method&nbsp;"foo"&nbsp;of&nbsp;class&nbsp;"A"&nbsp;from&nbsp;global&nbsp;scope<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>   </div>  </div> </div><hr /><div style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="language.namespaces.html">Namespaces</a></div> <div class="next" style="text-align: right; float: right;"><a href="language.exceptions.html">Exceptions</a></div> <div class="up"><a href="language.namespaces.html">Namespaces</a></div> <div class="home"><a href="index.html">PHP Manual</a></div></div></body></html>

⌨️ 快捷键说明

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