首页 后端开发 php教程 php中的魔术常量实例详解

php中的魔术常量实例详解

May 03, 2017 pm 05:33 PM

什么是魔术常量?

讲解PHP常量的时候,我们知道PHP中的常量大部分都是不变的,但是有8个预定义常量会随着他们所在代码位置的变化而变化,这8个常量被称为魔术常量,这些特殊的常量是不区分大小写,

PHP 的“魔术常量”如下表

函数 检测类型
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) 
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字
__TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

1486188938564607.gif上表中“__”是两条下划线,而不是一条“_”。

魔术常量常常被用于获得当前环境信息或者记录日志。

下面我看一下这些魔术常量的用法:

__LINE__   获取文件中的当前行号。

实例

<?PHP
header("content-type:text/html;charset=utf-8");
echo "这是第 ". __LINE__ ."行";
echo "<br/>";
?>
登录后复制

代码运行结果:

1.jpg

__FILE__ 获取文件的完整路径和文件名,如果用在被包含文件中,则返回被包含的文件名。

2.jpg

__DIR__ 获取文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

实例

<?php
header("content-type:text/html;charset=utf-8");
echo "该文件位于 ". __DIR__ ."文件夹下";
echo "<br/>";
?>
登录后复制

代码运行结果:

3.jpg

__FUNCTION__ 获取该函数被定义时的名字(区分大小写),只返回函数名

实例

<?php
header("content-type:text/html;charset=utf-8");
function Test() {
    echo  "该函数名为:". __FUNCTION__ ;
    echo "<br/>";
}
Test();
?>
登录后复制

代码运行结果:

4.jpg

__CLASS__ 获取该类被定义时的名字(区分大小写)

实例

<?php
header("content-type:text/html;charset=utf-8");
class test {
    function show() {
        echo "该类名为:". __CLASS__ . "<br>";
        echo "该函数名为:". __FUNCTION__ ;
        echo "<br/>";
    }
}
$t = new test();
$t->show();
?>
登录后复制

代码运行结果:

5.jpg

__METHOD__ 获取该方法被定义时的名字(区分大小写),若该函数在类中,则返回 类方法名称,

即: 类名::方法名。

实例

<?php
    header("content-type:text/html;charset=utf-8");
    function test1() {
        echo  "该函数名为:". __METHOD__ ;
        echo "<br/>";
    }
    test1();
    ?>
    <?php
    class chhua{
        function test(){
            //返回类方法的名称
            echo __METHOD__;
        }
    }
    $e=new chhua();
    $e->test();//输出:chhua::test
    ?>
登录后复制

代码运行结果:

8.jpg

__NAMESPACE__ 当前命名空间的名称(区分大小写)

<?php
namespace MyProject;

echo &#39;"&#39;, __NAMESPACE__, &#39;"&#39;; // 输出 "MyProject"
?>
登录后复制

代码运行结果:

7.jpg

以上是php中的魔术常量实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

C语言中的常量是什么,可以举一个例子吗? C语言中的常量是什么,可以举一个例子吗? Aug 28, 2023 pm 10:45 PM

常量也称为变量,一旦定义,其值在程序执行期间就不会改变。因此,我们可以将变量声明为引用固定值的常量。它也被称为文字。必须使用Const关键字来定义常量。语法C编程语言中使用的常量语法如下-consttypeVariableName;(or)consttype*VariableName;不同类型的常量在C编程语言中使用的不同类型的常量如下所示:整数常量-例如:1,0,34,4567浮点数常量-例如:0.0,156.89,23.456八进制和十六进制常量-例如:十六进制:0x2a,0xaa..八进制

如何在Python中创建一个常量? 如何在Python中创建一个常量? Aug 29, 2023 pm 05:17 PM

常量和变量用于在编程中存储数据值。变量通常指的是可以随时间变化的值。而常量是一种变量类型,其值在程序执行期间不能被改变。在Python中只有六个内置常量可用,它们是False、True、None、NotImplemented、Ellipsis(...)和__debug__。除了这些常量之外,Python没有任何内置数据类型来存储常量值。示例下面演示了常量的示例-False=100输出SyntaxError:cannotassigntoFalseFalse是Python中的内置常量,用于存储布尔值

在Java中,仅使用final关键字可以定义一个常量吗? 在Java中,仅使用final关键字可以定义一个常量吗? Sep 20, 2023 pm 04:17 PM

常量变量是其值固定且程序中只存在一个副本的变量。一旦你声明了一个常量变量并给它赋值,你就不能在整个程序中再次改变它的值。与其他语言不同,Java不直接支持常量。但是,你仍然可以通过声明一个变量为静态和final来创建一个常量。静态-一旦你声明了一个静态变量,它们将在编译时加载到内存中,即只有一个副本可用。Final-一旦你声明了一个final变量,就不能再修改它的值。因此,你可以通过将实例变量声明为静态和final来在Java中创建一个常量。示例 演示classData{&am

PHP报错:调用未定义的常量怎么解决? PHP报错:调用未定义的常量怎么解决? Aug 26, 2023 pm 03:39 PM

PHP是一种广泛应用于网页开发的服务器端脚本语言,它的灵活性和易用性使其成为许多开发人员的首选。然而,在使用PHP时,我们有时会遇到一些报错的情况。本篇文章将重点讨论"调用未定义的常量"错误,以及如何解决这个问题。一、问题描述当我们在代码中使用一个未定义的常量时,PHP会抛出一个致命错误,提示我们调用了一个未定义的常量。下面是一个常见的例子:echoMY_

基本数据类型常量的定义和初始化方法学习指南 基本数据类型常量的定义和初始化方法学习指南 Jan 05, 2024 pm 02:08 PM

学习基本数据类型常量的定义和初始化方法,需要具体代码示例在编程中,常常会用到各种基本数据类型,比如整型、浮点型、字符型等。在使用这些数据类型时,不仅需要了解它们的定义和用法,还需要知道如何定义和初始化它们的常量。本文将为大家介绍基本数据类型常量的定义和初始化方法,并给出具体的代码示例。整型常量的定义和初始化方法整型常量包括int、long、short和byt

PHP报错:使用未定义的常量作为属性名怎么办? PHP报错:使用未定义的常量作为属性名怎么办? Aug 17, 2023 pm 02:13 PM

PHP报错:使用未定义的常量作为属性名怎么办?在PHP开发中,我们经常会使用类和对象来组织和管理代码。在定义一个类的过程中,类的属性(即成员变量)起到了保存数据的重要作用。然而,当我们在使用属性时,有时会发生使用未定义的常量作为属性名的错误。本文将介绍这种错误的原因,并且提供几种解决方法。首先,让我们看一个简单的例子来演示这个问题。假设我们有一个名为"Per

一文带你搞懂Python中变量与常量 一文带你搞懂Python中变量与常量 Jul 25, 2023 pm 02:15 PM

本文基于Python基础,主要介绍了Python基础中变量和常量的区别,对于变量的用法做了详细的讲解,用丰富的案例 ,代码效果图的展示帮助大家更好理解 。

PHP中的命名规范:如何使用下划线命名法命名常量和文件名 PHP中的命名规范:如何使用下划线命名法命名常量和文件名 Jul 30, 2023 am 10:36 AM

PHP中的命名规范:如何使用下划线命名法命名常量和文件名在PHP编程中,良好的命名规范对于提高代码的可读性和可维护性非常重要。本文将介绍如何使用下划线命名法来命名常量和文件名,并通过代码示例来演示。常量的命名规范在PHP中,常量的命名通常全大写,并以下划线分隔单词。这种命名规范可以清晰地区分常量和变量,并且易于阅读和理解。以下是一些常见的常量命名示例:def

See all articles