php中const与static的区别与使用

不言
发布: 2023-03-23 12:26:02
原创
1656 人浏览过

本篇文章给大家介绍的内容是php中const与static的区别与使用,有需要的朋友可以参考一下

首先关于const 在php的类内部只可以修饰成员属性,不可以修饰方法,如下:

[php] view plain copy

class Test{  
    const PATH = 'c/';//修饰常量  
    const function test(){//这种方法是错误的,const无法修饰方法  
    }  
}
登录后复制

const在使用的时候不需要添加权限修饰字段,但是在调用const修饰的常量时是需要技巧的,因为常量是属于整个类的,而不是属于某个对象,所以在调用的时候需要使用类名加域名修饰符,例:

[php] view plain copy

echo Test::PATH;  
//也可以使用下面的方法调用  
$test = new Test();  
echo  $test::PATH;
登录后复制

但是在类内部调用的时候就会出现问题,如何在类内部获取当前类名或者当前对象名(php可以根据对象获取类名-反射),php中给我们提供了两个特殊的关键字,如:

[php] view plain copy

class Test{  
    const PATH = 'c/';//修饰常量  
    public function ass(){  
        echo $this::PATH.'
'; echo self::PATH.'
'; } }
登录后复制

其中self(不加$)代表当前类名,$this代表当前对象。这样,我们就可以在类内部调用const修饰的常量了。

接下来我们说说static

const虽然很好用,但是一经定义就无法修改值了,但是有的时候我们需要一个属于类的属性,但是又可以修改其值,比如统计此类构造了几个对象,这个时候就是使用static的时候了,在static修饰类的成员变量的时候,它的使用方法基本与const一样,区别就在于static修饰的属性可以添加权限(7.1的php中const也可以添加,以前的不能),并且static修饰的成员变量的值是可以修改的。

但是当static修饰成员方法的时候,使用方法有一点改变,在类的内部,static修饰的方法体内部,无法访问当前类的任何普通成员变量,准确的来说是无法使用关键字$this,只可以使用当前类的静态成员变量,和类常量。

[php] view plain copy

class Test{  
    static public $name='asd';  
    const π = 3.1415926;  
    public $age = 10;  
    public static function lenth($r){  
        //echo $this->age;//会发生错误,不能访问普通的成员变量  
        echo Test::$name;  
        return $r*2*self::π;  
          
    }  
    public static function area($r){  
        return $r*$r*self::π;  
    }     
}
登录后复制

在使用static的过程中,调用的方法与调用static修饰的变量不同,既可以通过类名调用,也可以通过对象名调用,比如:

[php] view plain copy

echo '周长:'. Test::lenth(1).'
'; echo '面积:'.Test::area(1).'
'; $per = new Test(); echo $per->lenth(3);
登录后复制

以上这两种调用方式都是合法的。

相关推荐:

php中iconv函数的使用方法    

php中的PHP_EOL换行符解析      

以上是php中const与static的区别与使用 的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!