范围解析操作符(类常量访问)|学习笔记

简介: 快速学习范围解析操作符(类常量访问)

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第一阶段范围解析操作符(类常量访问)】学习笔记,与课程紧密联系,让用户快速学习知识。  

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


范围解析操作符(类常量访问)

 

内容介绍:

一、概念

二、步骤

三、示例

四、小结

 

类的成员有三个:属性、方法和类常量。而属性、方法都用对象访问到了,但是唯独类常量访问不了,就用范围解析操作符,能够实现访问。本节的目标是理解范围解析操作符的概念和目标,掌握范围解析操作符的应用。

 

一、概念

范围解析操作符:由两个冒号组成“::”,是专门用于类实现类成员操作的,可以实现类直接访问类成员。

1.范围解析操作符是用于给类(类名)访问类成员使用的;

类名::类成员

2.范围解析操作符也可以被对象用来当做类使用。但不建议使用,因为有些东西虽然具有共用的方式,但对象应该用对象的访问符合来访问,访问解析操作符是给类访问的。

$对象名::类成员

3.类常量只能被类访问

 

二、步骤

定义类结构,定义的成员里确定要由类进行管理,比如类常量,此时就用类常量进行访问,用范围解析操作符帮助类实现类常量的访问。

 

三、示例

1、类常量的普通访问尝试:尝试使用对象进行访问。

普通尝试访问,定义一个类常量,

class saler{

#类常量

const PI = 3.14;

}

去访问时产生一个对象,

$s1 = new Saler();

对象之后去访问,

echo $s1->PI;

尝试能不能访问:

< ?php

#范围解析操作符

class Saler{

#类常量

const PI = 3.14;

}

$s1 = new Saler();

echo $s1->PI;

image.png

提示是未定义的属性,没有 Saler::$PI,系统将它解析为$PI,自然找不到了,因为它是常量,说明这种方法不可取,这是无法访问的。

2、具体操作用类来访问,因为类常量的定义本身就是归类管,是专门为类提供的成员,所以只能用类名来访问,类名直接 Saler::常量名。

#类访问类常量

echo Saler::PI;

image.png

输出3.14,说明类可以访问类常量。

3、对象本身也指向于类,对象要访问方法必须要找到类,因此也可以尝试访问,

echo $s::pI;

image.png

输出3.14,说明没有报错,这种方式是兼容的,范围解析操作符兼容对象:找到对象所属类最终进行访问,所以最终$s1变成 Saler 了才能访问。

这里虽然可以用,但是不建议使用,因为规定类常量属于类,应该由类来访问。

4、类常量是固定的,对象的属性是不同对象而不同的,每个人都有自己的名字,成员方法简单的理解也是为属性本身进行加工的,因为数据加工才会用到一些方法、逻辑,因此对应的类常量是专属于类的,而方法和属性是专门属于对象的,所以既然分工已经规定了谁归谁,那么访问时就应该谁来访问谁,类就访问类常量,对象就访问属性和方法。

注意类能够直接访问类里面的成员,那么类访问常量需要对象存在吗?答案是不需要。因为类访问常量是找类,跟对象没有关系。这样就会产生性能之争,要产生一个对象就会要额外的内存开销,变量找到对象,对象再找到类再去访问的过程,类直接访问的效率会高。但是对象的灵活性是不可替代的,因为类用这种方式永远只有一个固定的东西,而用不同的对象就会有不同的信息,所以对象有对象存在的价值,不是因为类效率高了,就只用类。

 

四、小结

1、类访问成员的方式是使用范围解析操作符“::”访问,由类名直接访问:类名::类常量。

2、类本身是通过同类类似的对象抽象而成,所以属性和方法本身都是由对象来访问,不用范围解析操作符,虽然也能用。

3、什么时候用到范围解析操作符,要看类是否有一些需求需要自身对数据和操作进行加工, 而不依赖于对象,比如人类的进化就不是某一个具体的个体,现在科技在某一种情况下可以直接实现整个人类的进化或者灭绝,此时,可能在类的概念上存在加工或操作,要定一些跟类相关的一些操作。

相关文章
|
2月前
|
存储 C++ 容器
C++入门指南:string类文档详细解析(非常经典,建议收藏)
C++入门指南:string类文档详细解析(非常经典,建议收藏)
42 0
|
2月前
|
缓存 负载均衡 网络协议
阿里云DNS常见问题之某个地域访问不到如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
2月前
|
域名解析 网络协议 开发工具
阿里云DNS常见问题之访问重定向的url访问有问题如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
2月前
|
XML 存储 Java
Spring重要类解析
Spring重要类解析
21 0
|
2月前
|
机器学习/深度学习 算法
【数学建模竞赛】评价类赛题常用算法解析
【数学建模竞赛】评价类赛题常用算法解析
33 0
|
11天前
|
Linux 网络安全 Apache
使用树莓派搭建个人网站,并发布到外网可访问:实用步骤解析
使用树莓派搭建个人网站,并发布到外网可访问:实用步骤解析
|
18天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
18 0
|
2月前
|
域名解析 网络协议 应用服务中间件
阿里云DNS常见问题之域名在代理服务器上不能访问只能通过IP映射如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
2月前
|
存储 程序员 编译器
【C++ 模板类与虚函数】解析C++中的多态与泛型
【C++ 模板类与虚函数】解析C++中的多态与泛型
46 0
|
2月前
|
Python
Python类与对象:深入解析与应用
本文介绍了Python中的核心概念——类和对象,以及它们在面向对象编程中的应用。类是用户定义的类型,描述具有相同属性和行为的对象集合;对象是类的实例,具备类的属性和方法。文章通过示例讲解了如何定义类、创建及使用对象,包括`__init__`方法、属性访问和方法调用。此外,还阐述了类的继承,允许子类继承父类的属性和方法并进行扩展。掌握这些概念有助于提升Python编程的效率和灵活性。

推荐镜像

更多