admin 发表于 2023-2-16 18:54:41

PHP 魔术常量

<div id="article_content" class="article_content clearfix">
      <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-1a98987dfd.css">
      <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-6e43165c0a.css">
                <div id="content_views" class="htmledit_views">
                  <p>PHP 向它运行的任何脚本提供了大量的预定义常量。</p>
<p>不过很多常量都是由不同的扩展库定义的&#xff0c;只有在加载了这些扩展库时才会出现&#xff0c;或者动态加载后&#xff0c;或者在编译时已经包括进去了。</p>
<p>有八个魔术常量它们的值随着它们在代码中的位置改变而改变。</p>
<p>例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写&#xff0c;如下&#xff1a;</p>
<hr>
<h2>__LINE__</h2>
<p>文件中的当前行号。</p>
<h2>实例</h2>
<p><?php echo '这是第 &#34; ' . __LINE__ . ' &#34; 行'; ?></p>
<p>以上实例输出结果为&#xff1a;</p>
<pre>这是第 “ 2 ” 行</pre>
<hr>
<h2>__FILE__</h2>
<p>文件的完整路径和文件名。如果用在被包含文件中&#xff0c;则返回被包含的文件名。</p>
<p>自 PHP 4.0.2 起&#xff0c;__FILE__ 总是包含一个绝对路径&#xff08;如果是符号连接&#xff0c;则是解析后的绝对路径&#xff09;&#xff0c;而在此之前的版本有时会包含一个相对路径。</p>
<p>实例:</p>
<h2>实例</h2>
<p><?php echo '该文件位于 &#34; ' . __FILE__ . ' &#34; '; ?></p>
<p>以上实例输出结果为&#xff1a;</p>
<pre>该文件位于 “ E:\wamp\www\test\index.php ”</pre>
<hr>
<h2>__DIR__</h2>
<p>文件所在的目录。如果用在被包括文件中&#xff0c;则返回被包括的文件所在的目录。</p>
<p>它等价于 dirname(__FILE__)。除非是根目录&#xff0c;否则目录中名不包括末尾的斜杠。&#xff08;PHP 5.3.0中新增&#xff09;</p>
<h2>实例</h2>
<p><?php echo '该文件位于 &#34; ' . __DIR__ . ' &#34; '; ?></p>
<p>以上实例输出结果为&#xff1a;</p>
<pre>该文件位于 “ E:\wamp\www\test ”</pre>
<hr>
<h2>__FUNCTION__</h2>
<p>函数名称&#xff08;PHP 4.3.0 新加&#xff09;。自 PHP 5 起本常量返回该函数被定义时的名字&#xff08;区分大小写&#xff09;。在 PHP 4 中该值总是小写字母的。</p>
<h2>实例</h2>
<p><?php function test() { echo '函数名为&#xff1a;' . __FUNCTION__ ; } test(); ?></p>
<p>以上实例输出结果为&#xff1a;</p>
<pre>函数名为&#xff1a;test</pre>
<hr>
<h2>__CLASS__</h2>
<p>类的名称&#xff08;PHP 4.3.0 新加&#xff09;。自 PHP 5 起本常量返回该类被定义时的名字&#xff08;区分大小写&#xff09;。</p>
<p>在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域&#xff08;例如 Foo\Bar&#xff09;。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时&#xff0c;__CLASS__ 是调用 trait 方法的类的名字。</p>
<h2>实例</h2>
<p><?php class test { function _print() { echo '类名为&#xff1a;' . __CLASS__ . &#34;<br>&#34;; echo '函数名为&#xff1a;' . __FUNCTION__ ; } } $t &#61; new test(); $t->_print(); ?></p>
<p>以上实例输出结果为&#xff1a;</p>
<pre>类名为&#xff1a;test
函数名为&#xff1a;_print</pre>
<hr>
<h2>__TRAIT__</h2>
<p>Trait 的名字&#xff08;PHP 5.4.0 新加&#xff09;。自 PHP 5.4.0 起&#xff0c;PHP 实现了代码复用的一个方法&#xff0c;称为 traits。</p>
<p>Trait 名包括其被声明的作用区域&#xff08;例如 Foo\Bar&#xff09;。</p>
<p>从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法&#xff0c;而 trait 方法又覆盖了基类中的方法。</p>
<h2>实例</h2>
<p><?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o &#61; new MyHelloWorld(); $o->sayHello(); ?></p>
<p>以上例程会输出&#xff1a;</p>
<pre>Hello World!</pre>
<hr>
<h2>__METHOD__</h2>
<p>类的方法名&#xff08;PHP 5.0.0 新加&#xff09;。返回该方法被定义时的名字&#xff08;区分大小写&#xff09;。</p>
<p>实例:</p>
<h2>实例</h2>
<p><?php function test() { echo '函数名为&#xff1a;' . __METHOD__ ; } test(); ?></p>
<p>以上实例输出结果为&#xff1a;</p>
<pre>函数名为&#xff1a;test</pre>
<hr>
<h2>__NAMESPACE__</h2>
<p>当前命名空间的名称&#xff08;区分大小写&#xff09;。此常量是在编译时定义的&#xff08;PHP 5.3.0 新增&#xff09;。</p>
<p>实例:</p>
<h2>实例</h2>
<p><?php namespace MyProject; echo '命名空间为&#xff1a;&#34;', __NAMESPACE__, '&#34;'; // 输出 &#34;MyProject&#34; ?></p>
<p>以上实例输出结果为&#xff1a;</p>
<pre>命名空间为&#xff1a;&#34;MyProject&#34;</pre>
                </div>
      </div>
      <div id="treeSkill"></div>
页: [1]
查看完整版本: PHP 魔术常量