关于php 类成员属性声明和访问的问题
发布网友
发布时间:2022-05-06 20:23
我来回答
共3个回答
热心网友
时间:2023-09-15 14:01
你总共提了三个问题,三个问题都是关于访问权限控制的,建议你将面向对象的访问权限控制的那部分给学习一下。
(1)类里的变量是否一定要声明为成员属性,
答:不一定,在一个类中,有构造函数、属性、方法;未在方法和构造函数中声明的变量为属性,属性是体现这一个类(对象)的特性的描述,他是这个类的特性的描述,这个类的状态的改变将会随着这些属性值的改变而改变。如果某一变量不属于这个类的属性,当然可以声明在别的地方,只要在访问权限内,当然也可以访问,就像foreach($this->post as $key=>$value),$key与$value都不是类的属性,当然不用声明在类的属性部分了,这里的$key与$value便成了这个方法的局部变量。
(2)非类的属性,绝对不能用$this->来访问,$this指的是当前对象,$this->所指向的是当前对象的属性或许方法,既然不是类的属性,当然不能用$this->来访问了,追问那么一般情况下,什么变量应该声明为类属性?什么变量可以不用呢?
追答比如说对一个学生类,就有年龄、学好、性别、爱好、身高等属性。它描述这一个学生的特征。
就可以声明为属性。而其它不属于描述这个学生类的特征的变量,就可以不用声明为属性。
热心网友
时间:2023-09-15 14:01
类里面声明的不是变量,是类属性.
对象里也可以用变量,和常规变量一样使用.
但是属性不同,属性只属于类.类自身调用属性就要用到$this. 被实例化的对象也可以调用: 对象名->属性; 但必须保证属性是公共的: public
建议再学习一下OO的理论基础.
热心网友
时间:2023-09-15 14:02
逐个回答你的问题吧 。
1)类内不声明的变量不属于成员变量
2)可以直接访问变量,但在类外部访问时,你会发现,成员变量根本就没变化。
3)既然你使用了类,那么你就是想在类外部访问这些成员或方法,否则直接用函数还方便。