首页> 基础笔记 >PHP基础学习 >面向对象 面向对象
PHP面向对象static关键字的使用
作者:小萝卜 2019-09-02 【 PHP 面向对象 】 浏览 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)