不二如是 发表于 2018-11-12 11:26:09

0 0 4 5 ● 静态属性和方法

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



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

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

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

echo $obj1->name;

class User(){}

?>

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

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

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

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

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

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

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

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

        function get_sp(){
                return self::$static_property;
        }
}
?>


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

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

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

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

Test C失败了,因为**** Hidden Message *****

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




这位鱼油,如果喜欢本系列PHP+MySql+Js帖子,请订阅 专辑☞(传送门)(不喜欢更要订阅{:10_297:} )

爱学习的懒懒君 发表于 2018-12-9 20:47:43

好久没更了{:10_266:}

wjz@loveiy.com 发表于 2020-5-6 13:25:53

学习

优时风 发表于 2020-5-7 08:31:19

1

COGSWW 发表于 2020-8-12 00:43:34

因为什么

omg123460 发表于 2021-10-23 19:16:55

{:10_277:}

知识改变眼界 发表于 2022-9-12 12:29:01

看看
页: [1]
查看完整版本: 0 0 4 5 ● 静态属性和方法