博主信息
博文 8
粉丝 0
评论 0
访问量 9601
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP中的魔术变量
并向你招手祥子
原创
1334人浏览过

PHP 魔术变量

PHP预定义了很多常量,其中有8个魔术变量,他们会随着所处代码中的位置的变化而变化

1. __LINE__    在文件中的当前行号

示例代码

<?php
    echo '我是_LINE__,我在此文件的第 " '  . __LINE__ . ' " 行';
?>

输出结果

    echo '我是_LINE__,我在此文件的第 " '  . __LINE__ . ' " 行';


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

示例代码

<?php
    echo '我是_FILE__,我的路径是: " '  . __FILE__ ;
?>

输出结果

我是_FILE__,我的路径是: " E:\nawesm\debug\class\student.php


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

等价于 dirname(__FILE__)。除根目录外,目录中名不包括末尾的斜杠。

示例代码

<?php
    echo '我是_DIR__,我所在文件夹的路径是: " '  . __DIR__ ;
?>

输出结果

我是_DIR__,我所在文件夹的路径是: " E:\nawesm\debug\class

4. __FUNCTION__   函数名称。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

如果直接在函数外输出该变量,其值为

示例代码

<?php
    function TestFunction(){
        echo '我是_FUNCTION__,我所在函数名是: " '  .__FUNCTION__;
    }
    testfunction();
?>

输出结果

我是_FUNCTION__,我所在函数名是: " TestFunction

5.__CLASS__ 类的名称。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。

注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

示例代码

<?php
class testClass{
    
    function TestFunction(){
        echo '我是_CLASS__,我所在类名是: " '  .__CLASS__;
    }
}
$testClass = new testClass();
$testClass -> TestFunction();
?>

输出结果

我是_CLASS__,我所在类名是: " testClass

6.__METHOD__  类的方法名。返回该方法被定义时的名字(区分大小写)。

示例代码1

<?php
function Testmethod(){
        echo '我是_METHOD__,我所在类名是: " '  .__METHOD__;
    }
Testmethod();
?>

输出结果

我是_METHOD__,我所在的方法定义时的名称是: " Testmethod

示例代码2

<?php
class testClass{
    function Testmethod(){
        echo '我是_METHOD__,我所在的方法定义时的名称是: " '  .__METHOD__;
    }
}
$testClass = new testClass();
$testClass -> Testmethod();
?>

输出结果

我是_METHOD__,我所在的方法定义时的名称是: " testClass::Testmethod

7. __NAMESPACE__  当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

示例代码

<?php
namespace MyPorject;
echo "我所在的命名空间为".__NAMESPACE__;
?>

输出结果

我所在的命名空间为MyPorject

8.  __TRAIT__   Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 Foo\Bar)。从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

示例代码

<?php
trait PeanutButter {
    function traitName() {echo __TRAIT__;}
}

trait PeanutButterAndJelly {
    use PeanutButter;
}

class Test {
    use PeanutButterAndJelly;
}

(new Test)->traitName(); //PeanutButter
?>

输出结果

PeanutButter



本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学