鱼C论坛

 找回密码
 立即注册
查看: 1697|回复: 6

[庖丁解牛] 0 0 4 5 ● 静态属性和方法

[复制链接]
发表于 2018-11-12 11:26:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2018-11-12 16:00 编辑

ed953fa85e431e300cd97f6c7144e719.jpg


在类中不必直接声明属性,因为初次使用它们便可以被间接定义。

直接声明又叫显示,间接声明叫隐式,之前讲过,稍微复习一下。

为了解释上面这个操作,创建代码:
  1. <?php
  2. $obj1 = new User();
  3. $obj1->name = "小甲鱼";

  4. echo $obj1->name;

  5. class User(){}

  6. ?>
复制代码


这段代码会正确输出“小甲鱼”哈,因为PHP间接(隐式)声明变量$obj1->name

大部分数据和方法适用于类的实例

例如,在类User中,为用户设置密码或查看用户的注册时间,这些数据和操作分别适用于不同的用户,所以使用实例特定属性和方法。

但有时也要维护整个类的数据,例如,当报告用户注册数量,需要建立一个用于整个User类的变量。

PHP为这类数据提供了静态属性静态方法

定义一个带有一个静态属性一个公有的方法,名为Test的类:
  1. <?php
  2. $temp = new Test();

  3. echo "Test A:".Test::$static_property."<br>";
  4. echo "Test B:".$temp->get_sp()."<br>";
  5. echo "Test C:".$temp->static_property."<br>";

  6. class Test{
  7.         static $static_property = "在下静态属性";

  8.         function get_sp(){
  9.                 return self::$static_property;
  10.         }
  11. }
  12. ?>
复制代码

Snip20181112_5.png


Test A和B可以正常输出,C竟然报错了?!

别慌,一切尽在掌握中,听我细细到来。

使用双冒号运算符能够直接访问Test A自身的属性$static_property。

同样,也可以调用$temp对象的get_sp方法获得Test B的值,该方法源自Test类。

Test C失败了,因为
游客,如果您要查看本帖隐藏内容请回复


注意get_sp方法是如何使用关键字self访问$static_property的,通过这种方式,能够在类中直接访问静态属性或变常量。





这位鱼油,如果喜欢本系列PHP+MySql+Js帖子,请订阅 专辑&#9758;传送门)(不喜欢更要订阅

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-9 20:47:43 | 显示全部楼层
好久没更了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 13:25:53 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-7 08:31:19 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-12 00:43:34 | 显示全部楼层
因为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-23 19:16:55 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-12 12:29:01 From FishC Mobile | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 02:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表