首页 > php面向对象 > PHP 类属性 类静态变量的访问

PHP 类属性 类静态变量的访问

php的类属性其实有两种,一种是类常量,一种是类静态变量。两种容易引起混淆。

如同静态类方法和类实例方法一样,静态类属性和实例属性不能重定义(同名),但静态属性可以和类常量同名。

<?php
class test {
    const constvar = 'hello world';
    static $staticvar = 'hello world';
    function getStaticvar() {
        return self::$staticvar;
    }
}
$obj = new test();
echo test::constvar
//输出'hello world'
echo test::staticvar
//出错,staticvar 前必须加$才能访问,这是容易和类常量(per-class常量)容易混淆的地方之一
echo test::$staticvar
//输出'hello world'
$str = 'test';
echo $str::$staticvar
//出错,类名在这不能用变量动态化
echo $str::constvar
//出错原因同上
//在类名称存在一个变量中处于不确定(动态)状态时,只能以以下方式访问类变量
$obj2 = new $str();
echo $obj2->getStaticvar();
?>
<?php
class test {
    const constvar = 'hello world';
    static $staticvar = 'hello world';
    function getStaticvar() {
        return self::$staticvar;
    }
}
$obj = new test();
echo test::constvar
//输出'hello world'
echo test::staticvar
//出错,staticvar 前必须加$才能访问,这是容易和类常量(per-class常量)容易混淆的地方之一
echo test::$staticvar
//输出'hello world'
$str = 'test';
echo $str::$staticvar
//出错,类名在这不能用变量动态化
echo $str::constvar
//出错原因同上
//在类名称存在一个变量中处于不确定(动态)状态时,只能以以下方式访问类变量
$obj2 = new $str();
echo $obj2->getStaticvar();
?>

               
               

文章地址:http://www.phprm.com/mxdx/fs159.html

转载随意^^请带上本文地址!

标签:变量 静态 属性

相关文章

发表留言