PHP面向对象——类常量,魔术常量与延期绑定

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

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

例:
define('ACC','Deny')

   class Human{

    static public function show(){
      
        echo ACC;
     }
}

Human::show();     //输出    Deny


能否定义 专门在类内发挥作用的常量
专门在类内发挥作用  说明
1.作用域在类内,类似于静态属性
2.又是常量,则不可改

其实就是“不可改变的静态属性”
类常量在类内用 const 声明即可
不用加权限修饰符,而且权限是默认public的,即外部也可以访问

类常量 静态属性 静态方法  ---》都是存放在类空间的


例:

 class Human{
     const HEAD=1;        //声明了一个类常量
}


echo Human::HEAD;        //输出   1;

注意:
  这个类常量的调用方式和静态方法一样。




魔术常量

1.无法手动修改他的值,所以叫常量

2.但是值又是随环境变动的,所以叫魔术


----魔术常量


魔术常量        自己查手册看去。

__FILE__ 返回当前文件的路径

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

__LINE__ 返回当前的行号

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

__DIR__ 返回当前的目录

__CLASS__  返回当前的类名

__METHOD__ 返回当前的方法名




魔术常量直接用 echo 输出就行了

例:
echo '当前正在运行的是',__FILE__,‘文件’;



后期静态绑定  /   延迟静态绑定


指类的计算self的定义不是以定义时为准,而是以运行时的计算结果为准


例:

  class Human{

    static public function whoami(){

       echo '来自父类的whoami在执行';
    }

    static public function say(){

         self::whomi();      //子类内没有say方法,找到了父类这里
                              //在这里的self指的是 父类
     }

static public function say2(){

          static::whoami();   //后期静态绑定从这里开始
                              //子类也没有say2方法,又找到父类这里   
                              //但是父类用 static::whoami()
                              //指调用你的子类自己的whoami方法  
                              //如果子类没有whoami方法则还会调用父类的whoami方法
     }

}

   class Stu extends Human{

     static public function whoami(){

        echo '来自于子类的whoami在执行';
     }
}


Stu::say();     //输出     来自父类的whoami在执行

Stu::say2();    //输出     来自于子类的whoami在执行

转载于:https://www.cnblogs.com/suiyuewuxin/p/5608477.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值