马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 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失败了,因为
注意get_sp方法是如何使用关键字self访问$static_property的,通过这种方式,能够在类中直接访问静态属性或变常量。
这位鱼油,如果喜欢本系列PHP+MySql+Js帖子,请订阅 专辑☞( 传送门)( 不喜欢更要订阅 ) |