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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 快速学习范围解析操作符(类常量访问)

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

相关文章
|
3月前
|
域名解析 网络协议 安全
在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
|
4月前
|
存储 弹性计算 大数据
阿里云服务器怎么样?全访问解析云服务器ECS功能、租用、优缺点及使用说明
阿里云ECS是弹性计算服务,提供安全可靠的云服务器,包括多种实例规格如经济型、通用型、计算型等,适合不同场景。ECS支持VPC专有网络、快照与镜像、多种付费模式。用户可根据业务需求选择实例、存储类型和网络配置。阿里云服务器适用于Web应用、游戏、大数据和深度学习等场景,提供免费试用和不同优惠套餐。众多知名企业如新浪微博等信赖阿里云服务。更多信息可访问阿里云官方网站。
250 5
|
26天前
|
存储 Java API
详细解析HashMap、TreeMap、LinkedHashMap等实现类,帮助您更好地理解和应用Java Map。
【10月更文挑战第19天】深入剖析Java Map:不仅是高效存储键值对的数据结构,更是展现设计艺术的典范。本文从基本概念、设计艺术和使用技巧三个方面,详细解析HashMap、TreeMap、LinkedHashMap等实现类,帮助您更好地理解和应用Java Map。
43 3
|
5月前
|
缓存 开发者 索引
深入解析 `org.elasticsearch.action.search.SearchRequest` 类
深入解析 `org.elasticsearch.action.search.SearchRequest` 类
|
1月前
|
存储 编译器 数据安全/隐私保护
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解2
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
30 3
|
1月前
|
编译器 C++
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解1
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
45 3
|
1月前
|
弹性计算 网络协议 网络安全
内网DNS解析&VPN网关联动实现云上访问云下资源
内网DNS解析&VPN网关联动实现云上访问云下资源
|
1月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
1月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
26 0
|
1月前
|
程序员 开发者 Python
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
37 0

推荐镜像

更多