普通常量_魔术常量_后期绑定/延迟绑定

本文介绍了PHP中常量的定义与使用方法,包括全局常量、类常量及魔术常量的特点与应用场景。并通过示例展示了如何定义不同作用域的常量以及魔术常量如何提供元数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

普通常量

define('常量名',常量值);

以前说过: define定义的常量 ,全局有效.无论是页面内,函数内,类内,都可以访问.

能否定义 专门在类内发挥作用的常量?

专门在类内发挥作用 说明:

  1. 作用域在类内,类似于静态属性
  2. 又是常量,则不可改.

【其实就是"不可改变的静态属性"】

类常量 在类内用 const 声明即可,前面不用加修饰符,而且权限是public的,即外部也可以访问


define('ACC','Deny');
 
 
class Human {
    const HEAD = 1;
 
    public static $leg = 2;
 
    public static function show() {
        echo ACC,'<br />';
        echo self::HEAD,'<br />';
        echo self::$leg,'<br />';
    }
 
}
 
Human::show();
 
echo Human::HEAD;

魔术常量:

  1. 无法手动修改他的值,所以叫常量
  2. 但是值又是随环境变动的,所以叫魔术

魔术常量:

  __FILE__ 返回当前文件的路径.

在框架开发或者是网站初始化脚本中,用来计算网站的根目录

__LINE__ 返回当前的行号

在框架中,可以用来在debug时,记录错误信息

__CLASS__ 返回当前的类名

__METHOD__ 返回当前的方法名

header("Content-type: text/html; charset=utf-8"); 
 
echo '当前正在运行的是',__FILE__,'文件','<br />';
 
echo '当前在',__DIR__,'目录下<br />';
 
echo 'hi,我在',__LINE__,'行<br />';
echo 'hello,我在',__LINE__,'行<br />';
echo 'hehe,我在',__LINE__,'行<br />';
 
 
class Human {
    public static function t() {
        echo '你正在运行',__CLASS__,'类<br />';
        echo '下的',__METHOD__,'方法';
    }
}
 
Human::t();

后期绑定/延迟绑定

header("Content-type: text/html; charset=utf-8"); 
class Human {
    public static function whoami() {
        echo '来自父类的whoami在执行<br />';
    }
 
    public static function say() {
        self::whoami(); // 子类内没有say方法,找到了父类这里
                        // 在这里的self 指的是 父类
    }
 
    public static function say2() {
        static::whoami();    //  子类也没有say2方法,又找到父类这里 
                             // 但是父类用static::whoami,
                             // 指调用你子类自己的whoami方法
    }
}
 
 
class Stu extends Human{
    
    public static function whoami () {
        echo '来自子类的whoami在执行<br />';
    }
    
}
 
 
Stu::say();
 
Stu::say2();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值