用户登录

在类里面,我们可以定义一些静态的属性还有方法,这些静态的属性和方法不需要实例化类就可以使用,就是说,你可以使用类的名称加上静态属性还有方法的名称直接使用它们,不需要像前面介绍的那样,先用 new 操作符去创建一个类的实例,然后再去调用这个实例的属性和方法。

先打开 Track.php ,我们可以把这个 track_name 属性变成一个静态的属性,首先需要把访问控制符换成 public ... 然后在它的后面加上一个 static 这个关键词,它的中文意思就是静态的。

这样就可以把 track_name 这个属性,变成一个公开的静态的属性 ...

打开 index.php ... 这里,我们可以直接使用类名,后面加上两个冒号 ... 这个符号叫做范围解析操作符 ... 然后是静态的属性或者方法的名称 .. 注意这个属性名称的前面要加上 $ 符号 ... 最前面再用一个 echo ... 直接输出这个属性的值 ...

echo Track::$track_name

回到浏览器 ... 这里直接会显示 track_name 这个属性的值 ... 不需要去基于 Track 这个类去创建一个对象,然后再去访问这个对象的 track_name 属性 ... 直接使用类名,加上两个冒号,跟着属性的名称就可以直接访问到这些静态的属性了。

静态的方法

除了可以定义静态的属性,类里面的方法也可以是静态的 .. .再打开 Track.php ... 我们把这个 track_playing 改成一个静态的方法 ... 这里只需要在 public 的后面加上一个 static 关键词 ... 保存 ...

回到 index.php ... 再去调用这个类的静态方法 ... 先是类的名称 ... 加上范围解析操作符 ... 也就是两个冒号 ... 然后是静态的方法的名称 ... track_playing() ... 这个方法会返回一个字符串 ... 在前面加上一个 echo ... 直接输出这个字符串 ...

echo Track::track_playing();

保存 .. 回到浏览器 ... 这里会显示一个错误 ...Fatal error: Using $this when not in object context ... 意思就是,我们错误的使用了 $this 这个变量 ...

回到 Track.php ... 在 track_playing 这个方法里,用了一个 $this ,用它来代表实例化以后的那个对象... 因为这是一个静态的方法 ... 所以没有实例化的对象 ...

在这里,我们可以用一个 self 关键词 ... 用它来表示这个类本身 ... $this 表示对象 ... self 就表示类本身 ... self ,后面使用一个范围解析操作符 ... 两个冒号 ... 接着是要使用的这个静态的属性的名称 ... 这里需要加上一个 $ 符号 ... 这行代码的意思就是,返回,正在播放,再加上这个类里面的 track_name 这个静态属性的值 ...

public static function track_playing() {
return '正在播放 ' . self::$track_name;
}

再回到浏览器上看一下 ...

现在,就会显示 正在播放 Magic 这个字符串了 ...

静态属性与方法 - static,self《 PHP 面向对象 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点