1、源码
<?php
/**
* Copyright(C) Iamasb
* @project : 3、workerman相关知识点
* @explain : static关键字
* @filename : 4、static关键字
* @author : Iamasb
* @date : 2019/4/27
*/
class TestStatic
{
/**
* 静态属性
* @var string
*/
public static $param = ‘param’;/**
* @var string
*/
public $param1 = ‘param1’;/**
* 静态方法
* 打印属性param1
*/
public static function func1()
{
echo $this->param1,PHP_EOL;
}/**
* 静态方法
* 打印静态属性
*/
public static function func2()
{
echo self::$param,PHP_EOL;
}/**
* 打印静态属性param
*/
public function func3()
{
echo $this->param,PHP_EOL;
$this->func2();
}
}$ts1 = new TestStatic();
//$ts1->func1();
echo “====打印一====”,PHP_EOL;
$ts1->func2();
$ts1->func3();
$ts1->param = ‘ts1’;
echo “====打印二====”,PHP_EOL;
$ts1->func2();
$ts1->func3();
TestStatic::$param = “hello world”;
echo “====打印三====”,PHP_EOL;
$ts1->func2();
$ts1->func3();
$ts2 = new TestStatic();
echo “====打印四====”,PHP_EOL;
$ts2->func2();
$ts2->func3();
echo “====打印五====”,PHP_EOL;
TestStatic::func2();
2、执行结果
对$ts1->func1();进行注释掉,再执行
3、总结
static修改属性和方法的称为类静态,这里的静态是指类所有,被所有实例化对象共享
静态方法中不能使用$this,这是静态方法为类所有,因此在此方法内部使用$this,则无法区分是哪个实例化对象
修改静态属性,只能通过类名,如使用$this,则会被当做是该类的公开属性
静态方法可以通过一个类已实例化的对象来访问
self代替当前运行上下文
共同学习,写下你的评论
评论加载中...
作者其他优质文章