PHP学习笔记15 —— 魔术常量

PHP魔术常量详解与示例
本文详细介绍了PHP中的魔术常量,如__LINE__, __FILE__, __DIR__, __FUNCTION__, __CLASS__, __TRAIT__, __METHOD__和__NAMESPACE__。这些常量的值会随着代码位置的变化而变化,在调试和理解代码执行上下文时非常有用。示例代码展示了如何在不同场景下使用这些魔术常量。

PHP提供了大量的预定义常量,不过很多常量都是由不同的扩展库提供的,只有在加载了这些扩展库时才会出现。

有8个魔术常量,他们的值随着它们在代码中的位置的改变而改变。

15.1 _ LINE_

文件中当前行号。

<?php
echo '这是第 " '  . __LINE__ . ' " 行';
?>

15.2 _ FILE_

文件完成的路径和文件名。若果用在被包含文件中,则返回被包含文件名。

<?php
echo '该文件位于 " '  . __FILE__ . ' " ';
?>

15.3 _ DIR_

文件所在的目录。

<?php
echo '该文件位于 " '  . __DIR__ . ' " ';
?>

15.4 _ FUNCTION_

函数名称。返回该函数被定义时的名字。

<?php
function test() {
    echo  '函数名为:' . __FUNCTION__ ;
}
test();
?>

15.5 _ CLASS_

类的名称。返回类被定义时的名称。

<?php
class test {
    function _print() {
        echo '类名为:'  . __CLASS__ . "<br>";
        echo  '函数名为:' . __FUNCTION__ ;
    }
}
$t = new test();
$t->_print();
?>

15.6 _ TRAIT_

php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,PHP新增了Trait这个特性。

用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Trait的声明使用Trait关键词,Trait不能实例化.

一个类可以组合多个Trait,通过逗号相隔。

Trait中的方法会覆盖 基类中的同名方法,而本类会覆盖Trait中同名方法。

注意:当trait定义了属性后,类就不能定义同样名称的属性,否则会产生 fatal error,除非是设置成相同可见度、相同默认值。

<?php
trait Dog{
    public $name="dog";
    public function drive(){
        echo "This is dog drive";
    }
    public function eat(){
        echo "This is dog eat";
    }
}

class Animal{
    public function drive(){
        echo "This is animal drive";
    }
    public function eat(){
        echo "This is animal eat";
    }
}

class Cat extends Animal{
    use Dog;
    public function drive(){
        echo "This is cat drive";
    }
}
$cat = new Cat();
$cat->drive();  //输出:This is cat drive
echo "<br/>";
$cat->eat();  //输出:This is dog eat.

?>

15.7 _ METHOD_

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

<?php
function test() {
    echo  '函数名为:' . __METHOD__ ;
}
test();
?>

15.8 _ NAMESPACE_

当前命名空间的名称。

<?php
namespace MyProject;
 
echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值