访问修饰限定符|学习笔记

简介: 快速学习访问修饰限定符

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

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


访问修饰限定符

 

内容介绍:

一、访问修饰限定符

 

一、访问修饰限定符

1、目标

理解访问修饰限定符的作用,掌握访问修饰限定符的实际运用

属性或方法前面需要加一个 public 。

2、概念

访问修饰限定符:用在属性或者方法前的修饰关键字,是用来控制属性或者方法的访问位置

class Buyer{

#属性声明

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

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

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

#方法声明

function display(){

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

}

#类常量声明

const BIG NAME "BUYER';

}

(1)访问修饰限定符分类

①public:公有,类内和类外都可以访问

类是结构,{} 属于类外,{} 里面内容属于类外

②protected:受保护,只允许在相关类内部访问(高级部分的继承详细说明)

③private:私有,只允许在定义类内部访问

只能对大括号里面访问,方法是在类的内部,所以方法内部也属于类的内部,可以去访问私有的东西,私有的东西是为方法准备。

属性必须有访问修饰限定符,方法可以没有访问修饰限定符(默认public)

3、步骤

(1)声明类结构

(2)确定类成员

(3)确定类成员的访问位置限定,使用对应访问修饰限定符

(4)只能在对应位置访问被修饰的成员

本身在任何地方都允许对象去访问公有,如果东西有一定的安全措施,不希望被外部直接访问比较重要,外面不能随便拿东西出去私有,符合人类的思维逻辑。

4、示例

通过例子证明东西共有或者私有可以用在哪里

(1)公有成员访问

class saler{

# 属性

public $count = 100;

# 方法

public function getcount(){

echo __METHOD_; # 魔术常量,显示当前方法名(包含类名)

}

}

#:实例化对象

$s = new saler();|

# 访问(类外)

echo $s->count;

$s->getCount();

$s->setCount();

定义 saler 的类,$count=100,方法有一个为 get 有一个为 set,都是共有意味着拿到外面都可以用

类外调用的方法在内部运行,目前方法在外部调用,前提是能被外部调用,因为为 public 能调用否则不能。

代码 03public.php:

<?php

#访问修饰限定符

class Saler{

#属性

public $count = 100;

#方法

public function getcount(){

echo _METHOD_; #魔术常量,显示当前方法名(包含类名)

}

function setcount(){

echo __METHOD_;

}

}

#实例化对象

$s = new Saler();

#访问(类外)

echo $s->count;

$s->getCount();

$s->setCount();

实例化类的对象,通过实例化公有的属性和公有的方法进行。

结果:100Saler:getCountSaler::setCount

属性、方法都在类的外面可以被访问,内部肯定能被访问。

(2)受保护和私有成员设定(当前受保护和私有一致,需要高阶知识才会有区别)

class buyer{

# 属性

protected $money = 10;

private $account ='6226000000000001';

# 方法

protected function getMoney(){

echo __METHOD_;

}

private function getAccount(){

echo __METHOD_;

}

}

定义一个 Buyer 类,$受保护,账户私有,方法受保护 getmoney,getAccount 私有,私有属性私有方法受保护的属性受保护的方法

代码:(私有)

#访问(类外)

/*echo $s->count;

$s->getCount()

$s->setCount()*/

class Buyer{

# 属性

protected $money = 10;

private $account = '6226000000000001';

#方法

protected function getMoney(){

echo _METHOD_;

}

private function getAccount(){

echo _METHOD_;

}

}

$b = new Buyer();

echo $b->money;

//结果:

Fatal error: Uncaught Error: Cannot access protected property Buyer:$money in D:\server\Web\03public.php:45 Stack trace: #0 D:\server\Web\03public.php on line 45

//不能访问当前受保护的属性,因为当前是在类的外面所有不能访问

# echo $b->money;

echo $b->account;

//结果:

Fatal error: Uncaught Error: Cannot access private property Buye:$account in D:\server’Web\03public php:46 Stack trace: #0 {m D:\server\Web\03public.php on line 46

//依旧不能在外面访问。

//受保护的和私有的都不能在外面访问。

# echo $b->money;

# echo $b->account;

$b->getMoney();

//结果:

Fatal error: Uncaught Error:Call to protected method Buyer:getMoney() from context"in D:\server\Web\03publlic. php:49 Stack D:\server\Web\03public.php on line 49

//一样的错误,把属性换成了方法,from context 说明$b->getMoney() 调用的环境不是在类的内部。

# 实例化

$b=new Buyer();

echo $b->money; # 错误:当前属于类外部,不能访问

echo $b->account; # 错误:当前属于类外部,不能访问

$b->getMoney(); # 错误:当前属于类外部,不能访问

$b->getAccount(): # 错误:当前属于类外部,不能访问

5.总结

(1)访问修饰限定符分为三种:public、protected 和 private,访问权限依次降低(类对成员控制权限依次增加) (pubilc 哪里都可以访问,protected 有限定的访问,private 只有当前类的内部可以访问。)

(2)访问修饰限定符限定的是成员到底在哪里能被访问,私有和受保护都只能在类内部访问,公有可以在任何地方访问(但都必须是对象去访问)

(3)属性必须写清楚访问修饰限定符,方法可以省去(不建议),因为系统默认是 public

相关文章
|
弹性计算 监控 数据安全/隐私保护
阿里云ECS云监控界面
阿里云ECS云监控界面
1336 2
|
Web App开发 消息中间件 监控
浏览器原理 39 # 页面性能工具:如何使用 Performance?
浏览器原理 39 # 页面性能工具:如何使用 Performance?
659 0
浏览器原理 39 # 页面性能工具:如何使用 Performance?
老旧笔记本磁盘总是显示100%如何解决
老旧笔记本磁盘总是显示100%如何解决
1367 1
|
Linux 数据安全/隐私保护
如何在 Fedora 38 中为用户添加、删除和授予 Sudo 权限?
如何在 Fedora 38 中为用户添加、删除和授予 Sudo 权限?
790 0
如何在 Fedora 38 中为用户添加、删除和授予 Sudo 权限?
|
XML 设计模式 前端开发
如何使用Thymeleaf给web项目中的网页渲染显示动态数据?(一)
如何使用Thymeleaf给web项目中的网页渲染显示动态数据?(一)
|
存储 Java 区块链
fabric智能合约
fabric智能合约
602 0
|
人工智能 运维 监控
人工智能如何影响后端开发
【6月更文挑战第1天】人工智能如何影响后端开发
560 2
|
存储 监控 Linux
【亮剑】在Linux系统中,有一个特殊的目录经常被用户和管理员所忽视——/tmp。
【4月更文挑战第30天】`/tmp`目录在Linux系统中扮演着重要角色,用于存储临时文件,涉及程序运行、系统操作、用户文件及网络通信。它在系统维护、软件开发、数据处理和网络操作等场景中广泛应用。为保障系统稳定和数据安全,需进行权限控制、定期清理、设置磁盘配额、安全审计以及用户教育。理解和管理`/tmp`目录对于优化系统性能和防范风险至关重要。
776 1
|
数据可视化
约会数据动态可视化分析:R语言使用GGPLOT和GGANIMATE制作动画图
约会数据动态可视化分析:R语言使用GGPLOT和GGANIMATE制作动画图
|
JavaScript Java 关系型数据库
电影网站|基于SSM+vue的电影网站系统(源码+数据库+文档)
电影网站|基于SSM+vue的电影网站系统(源码+数据库+文档)
409 0