继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

24、面向对象例子-Static关键字

Iamasb
关注TA
已关注
手记 25
粉丝 4
获赞 37

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、执行结果

https://img3.mukewang.com/5ce7b9400001313726100276.jpg

  • 对$ts1->func1();进行注释掉,再执行

https://img1.mukewang.com/5ce7b94a0001753a16220600.jpg

3、总结

static修改属性和方法的称为类静态,这里的静态是指类所有,被所有实例化对象共享
静态方法中不能使用$this,这是静态方法为类所有,因此在此方法内部使用$this,则无法区分是哪个实例化对象
修改静态属性,只能通过类名,如使用$this,则会被当做是该类的公开属性
静态方法可以通过一个类已实例化的对象来访问
self代替当前运行上下文


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP