php class 访问控制
属性(attribute ) 必须声明访问控制类型
类型:
public 公用
protected 受保护的
private 私有的
public 类型的属性 可以在外部访问
protected 及private 的都不能从外部访问,例如:
class MyClass{
public $a = 12;
protected $b = 34;
private $c = 56;
public function show_attr(){
echo $this->a;
echo $this->b;
echo $this->c;
}
}
$obj_1= new MyClass();
$obj_1->show_attr();
echo $obj_1->a;
echo $obj_1->b;
echo $obj_1->c;
16行输出:123456
18行输出:12
19行、20行会报错,提示不能访问。
class MyClass2 extends MyClass
{
public $a = 120;//会覆盖父类的属性
protected $b = 340;//会覆盖父类的属性
private $c = 560;//私有的不会被继承 function printHello()
{
echo $this->a;
echo $this->b;
echo $this->c;
}
} $obj_2 = new MyClass2();
$obj_2->show_attr();//输出 12034056
echo "<br />";
$obj_2->printHello();//输出120340560
方法(method)
/**
* method
*/
class MyClass3
{ public $a = 1;
protected $b = 2;
private $c = 3; function __construct()
{
echo $this->a;
echo "<br />";
echo $this->b;
echo "<br />";
echo $this->c;
echo "<br />"; } public function ShowA()
{
echo "<br>".$this->a;
}
protected function ShowB()
{
echo "<br>".$this->b; }
private function ShowC()
{
echo "<br>".$this->c; } public function run_method()
{
echo "method start"; $this->ShowA();
$this->ShowB();
$this->ShowC();
echo "method end"; } protected function run_method1()
{
echo "method1 start";
$this->ShowA();
$this->ShowB();
$this->ShowC();
echo "method1 end"; } private function run_method2(){
echo "method2 start"; $this->ShowA();
$this->ShowB();
$this->ShowC();
echo "method2 end"; } } $obj_3 = new MyClass3();//1 2 3 $obj_3->ShowA();//method start 1 2 3method end
$obj_3->run_method();//1 2 3
$obj_3->run_method1();//error
$obj_3->run_method2();//error
继承
class MyClass4 extends MyClass3
{
public function run_extend()
{
echo "<hr >";
$this->run_method();
$this->run_method1();
$this->run_method2();
}
} $obj_4 = new MyClass4();
$obj_4->run_extend();
输出:
method start
1
2
3method endmethod1 start
1
2
3method1 end
Fatal error: Call to private method MyClass3::run_method2() from context 'MyClass4'
私有的方法也是无法继承的
php class 访问控制的更多相关文章
- RBAC基于角色的访问控制
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
- .NET环境下基于RBAC的访问控制
.NET环境下基于RBAC的访问控制 Access Control of Application Based on RBAC model in .NET Environment 摘 要:本文从目前信息 ...
- ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表
zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机制来解决访问权限问题,详见官网文档:ht ...
- Centos下ACL(访问控制列表)介绍(转)
我们知道,在Linux操作系统中,传统的权限管理分是以三种身份(属主.属組以及其它人)搭配三种权限(可读.可写以及可执行),并且搭配三种特殊权限(SUID,SGID,SBIT),来实现对系统的安全保护 ...
- IdentityServer4 简单使用,包括api访问控制,openid的授权登录,js访问
写在前面 先分享一首数摇:http://music.163.com/m/song?id=36089751&userid=52749763 其次是:对于identityServer理解并不是特别 ...
- public/private/protected访问控制权限的区别
//public/private/protected访问控制权限的区别//时间:2016/8/16 //(一)修饰成员: //public: 在类内.类外都能使用 . //protected: 在类内 ...
- Swift 3 中的访问控制 open public internal fileprivate private
Swift 3必看:新的访问控制fileprivate和open http://www.jianshu.com/p/604305a61e57 浅谈 Swift 3 中的访问控制 https://mai ...
- ssh访问控制,多次失败登录即封掉IP,防止暴力破解
ssh访问控制,多次失败登录即封掉IP,防止暴力破解 一.系统:Centos6.3 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减 ...
- 访问控制public/protected/private的区别
Java支持四种不同的访问权限: 修饰符 说明 public 共有的,对所有类可见. protected 受保护的,对同一包内的类和所有子类可见. private 私有的,在同一类内可见. 默认的 在 ...
- swift学习笔记之-访问控制
//访问控制 import UIKit /*访问控制(Access Control) 1.访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别.这个特性可以让我们隐藏代码的一些实现细节,并且可 ...
随机推荐
- IC设计流程概述
芯片设计分为前端设计和后端设计,前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界限,涉及到与工艺有关的设计就是后端设计. Front-end design flow 1. 规格制定 ...
- Java并发基础05. 传统线程同步通信技术
先看一个问题: 有两个线程,子线程先执行10次,然后主线程执行5次,然后再切换到子线程执行10,再主线程执行5次--如此往返执行50次. 看完这个问题,很明显要用到线程间的通信了, 先分析一下思路:首 ...
- UnboundLocalError,探讨Python中的绑定
绑定 将python闭包之前,先梳理一下闭包中的绑定操作. 先看看2个相关的错误 NameError 和UnboundLocalError When a name is not found at al ...
- spring中BeanPostProcessor之二:CommonAnnotationBeanPostProcessor(01)
在上篇博客中分享了InstantiationAwareBeanPostProcessor接口中的四个方法,分别对其进行了详细的介绍,在文末留下了一个问题,那就是postProcessPropertie ...
- python的字符串、列表、字典和函数
一.字符串 在python中字符串无需通过像php中的explode或者javascript中的split进行分解即可完成切片,可以直接通过下标获取字符串中的每一个字符,下标从0开始,如果从厚望签署, ...
- 2017蓝桥杯Excel地址(C++C组)
题目:Excel地址Excel单元格的地址表示很有趣,它使用字母来表示列号.比如,A表示第1列,B表示第2列,Z表示第26列,AA表示第27列,AB表示第28列,BA表示第53列,....当然Exce ...
- ThinkPHP5中raw的作用
在tp5中,我们一般在模板中输出变量是这样的:{$test} 但是有时候在有些源码中我们可以看到这样的方式:{$test|raw} 这个时候如果你去找手册会发现,全文基本没有提到这个raw的作用. 那 ...
- Highcharts图表库
Highcharts图表库 1.相关网址: 1)官方主页:https://www.hcharts.cn/ 2)Highcharts演示:https://www.hcharts.cn/demo/high ...
- 【python实现卷积神经网络】优化器的实现(SGD、Nesterov、Adagrad、Adadelta、RMSprop、Adam)
代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ...
- 《深入理解 Java 虚拟机》读书笔记:垃圾收集器与内存分配策略
正文 垃圾收集器关注的是 Java 堆和方法区,因为这部分内存的分配和回收是动态的.只有在程序处于运行期间时才能知道会创建哪些对象,也才能知道需要多少内存. 虚拟机栈和本地方法栈则不需要过多考虑回收的 ...