首页> 基础笔记 >PHP基础学习 >面向对象 面向对象

PHP面向对象static关键字的使用

作者:小萝卜 2019-09-02 浏览 889

简介static关键字表示静态的意思, 用于修饰类的成员属性和成员方法(即为静态属性和静态方法)。类中的静态属性和静态方法不用实例化(new)就可以直接使用类名访问。

PHP面向对象static关键字的使用

static关键字表示静态的意思, 用于修饰类的成员属性和成员方法(即为静态属性和静态方法)。

类中的静态属性和静态方法不用实例化(new)就可以直接使用类名访问。
格式:
类::$静态属性       类::静态方法

在类的方法中,不能用this来引用静态变量或静态方法,而需要用self来引用。
格式:
self::$静态属性     self::静态方法

静态方法中不可以使用非静态的内容。就是不让使用$this。

在一个类的方法中若没有出现$this的调用,默认此方法为静态方法。

静态属性是共享的。也就是new很多对象也是共用一个属性。

实例1:
<?php
    //声明一个MyClass类,用来演示如何使用静态成员
    class MyClass {                     
        public static $count;        //声明一个静态成员属性count,用来统计对象被创建次数
        public function __construct() {  //每次创建一个对象就会自动调用一次这个构造方法
            self::$count++;             //使用self访问静态成员count,使其自增1
        }
        public static function getCount() {    //声明静态方法,在类外面可以直接使用类名调用
            return self::$count;      //在方法中使用self访问静态成员并返回
        }
    }
    
    MyClass::$count=0;             //在类外面使用类名访问类中的静态成员,为其初始化赋值0
    $myc1 = new MyClass();     //创建第一个对象,在构造方法中将count累加1
    $myc2 = new MyClass();     //创建第二个对象,在构造方法中又为count累加1
    $myc3 = new MyClass();     //创建第三个对象,在构造方法中再次为count累加1
     
    echo MyClass::getCount();  //在类外使用类名访问类中静态方法,获取静态属性的值 3
    echo $myc3->getCount();    //通过对象也可以访问类中的静态方法,获取静态属性的值 3
实例2:
<?php
//静态:static
//使用static定义的方法称静态方法,不需要将类实例化,就可以通过类名::调用。
class Demo{ 

    public static function max($a,$b){
        return ($a>$b)?$a:$b;
    }
    
    public static function add($a,$b){
        return $a+$b;
    }
}

//使用静态方法
echo "10和30谁大?".Demo::max(10,30)."<br/>";
echo "100和300之和?".Demo::add(100,300)."<br/>";


/*
//方法没有使用静态的用法
$d = new Demo;
echo "10和30谁大?".$d->max(10,30)."<br/>";
echo "10和30之和?".$d->add(10,30)."<br/>";
*/

实例3:
 

<?php
//静态属性
class A{
    public static $name="zhangsan"; //静态属性只有一份,和对象数数量无关。
    public $age=10;
    //定义静态方法返回静态属性
    public static function fun(){
		//echo $this->age=20;
        return self::$name; //在类的内部使用self调用自己的静态属性或方法。
    }
}

echo A::$name; //输出类A中的静态属性name

echo A::fun(); //调用静态方法


$a = new A();

A::$name="lisi";

echo $a->fun();

echo $a::$name;

$a::$name="wangwu";

echo A::$name;

很赞哦! (0)

文章评论

    高端网站建设