类成员|学习笔记

简介: 快速学习类成员

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第一阶段类成员】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/711/detail/12659


类成员

 

内容介绍:

一、类成员

 

一、类成员

1、目标

了解类成员的类型,类成员的作用,能够运用类成员去创建有效类。

空类没有价值,因为没有办法操作。

2、概念

类成员:指直接定义在类结构{}内部的一级成员,即直接依赖{的成员

(1)类成员分类

①成员变量(属性):给对象存储数据的变量

②成员函数(方法):给对象调用解决问题的函数

③类常量:属于类内部的常量,使用 const 关键字定义

属性和方法需要使用访问修饰限定符修饰,姑且使用 public 修饰

class 类名{

# 类常量(可以多个)

const 常量名 = 值;

# 属性(可以多个)

public $属性名[ = 值];# 可以赋值也可以不赋值,只声明

#方法(可以多个)

[public] function 方法名([形参列表]){

# 方法体(返回值)

}

}

(2)类里面的成员类常量、属性、方法

比如在函数里面定义一个变量 $a=10 很明显不属于类成员,归属的是大括号,所以只能属于函数里面的变量,把它称之为局部变量,所以归属搞清楚之后就会去产生对象,产生对象之后对象要去访问

①成员访问:属性和方法都属于对象访问,类常量属于类访问(后续再讲)

访问类似于进行数组操作的键值对的关系。

对象访问属性和方法,使用->

# 实例化

$object = new 类名();

# 属性访问

$object->属性名; #此时不带属性本身的$符号(前面保存对象的变量带$符号,object->属性名是整体)

# 方法访问

$object->方法名([实参列表]);

对象变量名实例化出来,属性直接$变量指向属性的名字,注意不要带$,对象调用对应的方法名,再把对应的实参传入进去。

一个是怎样去定义一个类里面有哪些成员,一个是类里面有成员之后怎么去访问。

3、步骤

(1)声明类结构

(2)明确类产生的对象是否需要有数据的存储:确定属性

(3)明确类产生的对象是否需要函数实现功能:确定方法

(4)明确类是否需要定义常量:确定类常量

(5)对象实例化

(6)类成员访问(属性和方法)

4、示例

(1)声明类结构

# 定义买家类:买家有姓名,有钱

class buyer{

# 属性声明

$name; # 错误,类内部属性必须使用访问修饰限定符

public $name; # 正确:没有赋值

public $money = 0; # 正确:有赋值

# 方法声明

function display(){

echo __CLASS__;# 魔术常量,输出类名

}

# 类常量声明

const BIG_NAME = 'BUYER';

}

数据定义属性来保留,可以赋值,也可以不赋值,因为有些东西能赋值,有些不能。只是有名字这个概念,但是没有具体的名字,所以没有赋值。方法可以不用 public 关键字来直接写也行,相当于前面有一个 public 类常量,一般类常量都是用大写的。

执行 02 member.php:

<?Php

#类成员

#定义买家类:买家有姓名,有钱

class Buyer{

#属性声明

#$name; #错误,类内部属性必须使用访问修饰限定符

public $name; # 正确:没有赋值

public $money =0:# 正确:有赋值

#方法声明

function display(){

echo _CLASS_;# 魔术常量,输出类名

}

#类常量声明

const BIG NAME "BUYER';

}

类不能运行

Parse error: syntax error,unexpectedT$name’(T VARIABLE), expecting function(TFUNCTION)or const(TCONST) in D:\server\ Web\02member.php on line 8

8 name 出现错误

(2)成员变量访问(属性和方法):成员必须通过对象才能进行访问,需要先通过实例化得到对象,然后通过对象实现对成员进行操作

属性和方法只能对象访问,所以必须要产生对象。

# 实例化对象

$b=new Buyer();

# 访问属性

echo $b->money;

# 修改属性

$b->money = 1000;

# 删除属性

unset($b->name);

# 新增属性

$b->age = 20;

# 访问方法

$b->display()

执行一下:

#实例化

$b = new Buyer();

#属性操作:增上改查

echo $b->money;

//结果:0 说明可以查看

$b->money = 10;

var_dump($b);

//结果:0object(BLyer)#1 (2) { ["name’]=> NULL ["money"]=> int(10) }

////2代表两个属性,name 没有值,因为没有赋值。Money 等于10说明修改成功,修改完之后已经有增删改查。

$b->money = 10;

$b->eyes = 1;

unset($b->name);

var_dump($b);

//$b->eyes = 1 的结果

0object(Buyer)#1 (3){ ["name"]=> NULL ["money"]=> int(10) ["eyes"]=> int(1) }

//unset($b->name) 删之后结果

0object(Buyer)#1(2){[" money"]=> int(10) ["eyes"]=> int(1) }

# 方法操作:调用

$b->display();

var_dump($b);

//结果:0Buyerobject(Buyer)#1(2){["money"]=>int(10)["eyes*]=> int(1) }

#var_dump($b);

//一刷新0Buyer

用到了魔术常量 _CLASS_,输出的是当前所在类的类名

注意:

①删除属性和新增属性通常使用较少,更多的属性操作是访问和修改

②类常量不是由对象来进行访问,所以暂时不做访问讲解,到后面知识再讲

③属性和方法的使用都必须确保类中已经定义(属性可以新增)

(3)类成员中:属性,类常量和方法都可以无限定义,但是定义的原则是相关性。除了以上三个类成员,不能在类结构{}中直接写其他任何代码

class buyer{

echo __CLASS__; # 错误

define('PI',3.14); # 错误

if(true){ echo "hello world'} # 错误

}

明确类里面能做一些事情有类成员,其他代码都不能写。代码的直属上级是 {,所以它属于类成员,类成员不允许,函数的调用也不允许判定语句更不允许,所以代码没有办法直接在里面写,但是可以写在类函数里。

5、小结

(1)PHP 类结构中有且仅有三种成员:属性、方法和类常量,其他直接属于类的内容都会报错

(2)类声明需要根据业务来确定类成员的存在和数量(有才写)

(3)类中属性和方法的访问方式都是通过对象来调用:对象->属性名/方法名();注意属性名不带$符号

(4)类中定义属性不能直接属性名,需要使用符号 public 修饰(访问修饰限定符中的一种)

相关文章
|
4月前
|
存储 算法 C语言
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)
一、初始化列表 ⭕初始化列表概念 ⭕初始化列表的优点 ⭕使用场景 ⭕explicit关键字 二、Static成员 ⭕Static成员概念 🔴静态数据成员: 🔴静态函数成员: ⭕使用静态成员的
89 0
|
3月前
类与对象\静态成员
类与对象\静态成员
21 0
|
4月前
|
存储 编译器 C语言
【C++】类与对象【定义、访问限定符、this指针】
【C++】类与对象【定义、访问限定符、this指针】
20 1
|
算法 C++
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)下
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)下
67 0
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)下
|
4月前
|
存储 C++
第十一章 C++成员函数与静态成员详解
第十一章 C++成员函数与静态成员详解
32 0
|
9月前
|
编译器 C++
类和对象:初始化列表,静态成员,友元,内部类,匿名对象
类和对象:初始化列表,静态成员,友元,内部类,匿名对象
|
10月前
|
编译器 C++
C++类与对象 - 4(初始化列表,Static成员,友元,内部类,匿名对象)
C++类与对象 - 4(初始化列表,Static成员,友元,内部类,匿名对象)
33 0
|
12月前
|
Java 编译器 C++
【C++基础】类与对象(下) 初始化列表、友元、内部类、匿名对象
【C++基础】类与对象(下) 初始化列表、友元、内部类、匿名对象
50 0
【C++基础】类与对象(下) 初始化列表、友元、内部类、匿名对象
|
存储 C语言 C++
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)上
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)上
75 0
|
C++
类和对象中类对象作为类成员
类和对象中类对象作为类成员
55 0