属性(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 访问控制的更多相关文章

  1. RBAC基于角色的访问控制

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...

  2. .NET环境下基于RBAC的访问控制

    .NET环境下基于RBAC的访问控制 Access Control of Application Based on RBAC model in .NET Environment 摘 要:本文从目前信息 ...

  3. ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表

    zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机制来解决访问权限问题,详见官网文档:ht ...

  4. Centos下ACL(访问控制列表)介绍(转)

    我们知道,在Linux操作系统中,传统的权限管理分是以三种身份(属主.属組以及其它人)搭配三种权限(可读.可写以及可执行),并且搭配三种特殊权限(SUID,SGID,SBIT),来实现对系统的安全保护 ...

  5. IdentityServer4 简单使用,包括api访问控制,openid的授权登录,js访问

    写在前面 先分享一首数摇:http://music.163.com/m/song?id=36089751&userid=52749763 其次是:对于identityServer理解并不是特别 ...

  6. public/private/protected访问控制权限的区别

    //public/private/protected访问控制权限的区别//时间:2016/8/16 //(一)修饰成员: //public: 在类内.类外都能使用 . //protected: 在类内 ...

  7. Swift 3 中的访问控制 open public internal fileprivate private

    Swift 3必看:新的访问控制fileprivate和open http://www.jianshu.com/p/604305a61e57 浅谈 Swift 3 中的访问控制 https://mai ...

  8. ssh访问控制,多次失败登录即封掉IP,防止暴力破解

    ssh访问控制,多次失败登录即封掉IP,防止暴力破解 一.系统:Centos6.3 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减 ...

  9. 访问控制public/protected/private的区别

    Java支持四种不同的访问权限: 修饰符 说明 public 共有的,对所有类可见. protected 受保护的,对同一包内的类和所有子类可见. private 私有的,在同一类内可见. 默认的 在 ...

  10. swift学习笔记之-访问控制

    //访问控制 import UIKit /*访问控制(Access Control) 1.访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别.这个特性可以让我们隐藏代码的一些实现细节,并且可 ...

随机推荐

  1. web安全学习神器——DVWA安装部署

    前言 DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序.包含了SQL注入.XSS.文件包含等常见的一些安全漏洞.接下来我会用图文的形式讲解一下DVWA的下载与 ...

  2. Thinkphp getLastSql函数用法

    如何判断一个更新操作是否成功: $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Mode ...

  3. 搭建DVWA Web渗透测试靶场

    文章更新于:2020-04-13 按照惯例,需要的文件附上链接放在文首. 文件名:DVWA-1.9-2020.zip 文件大小:1.3 M 文件说明:这个是新版 v1.9 (其实是 v1.10开发版) ...

  4. 机器学习4- 多元线性回归+Python实现

    目录 1 多元线性回归 2 多元线性回归的Python实现 2.1 手动实现 2.1.1 导入必要模块 2.1.2 加载数据 2.1.3 计算系数 2.1.4 预测 2.2 使用 sklearn 1 ...

  5. C语言数据结构队列

    #include<stdio.h>#include<stdlib.h>struct Node { int data;  Node *next;};struct Queue { ...

  6. 汇编刷题:显示ABCDEFGH 八个字母

    DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,8 MOV ...

  7. String 对象-->lastIndexOf() 方法

    1.定义和用法 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,如果指定第二个参数 start,则在一个字符串中的指定位置从后向前搜索. 语法: string.lastInde ...

  8. 聊一聊深拷贝和浅拷贝(JS)

    在 JS 中数据类型分为值类型和引用类型,对于值类型,变量中存放的是具体的值,而对于引用类型,变量中存放的是地址. 对于值类型: const a = 3; let b = a; b = 4; cons ...

  9. cgdb使用方法

    cgdb --args [exe_name] [arg1] [arg2] [arg3] [...] 进入代码窗口 按ESC键 进入调试窗口 按i键 调试命令 r 运行 n 单步执行(不进入函数) s ...

  10. cmd批处理转义字符%的详细解释

    cmd批处理转义字符%的详细解释 在命令行中使用for时不需要双%,这源于命令解释器对命令行与批处理的处理方式不同. 1.%是个ESCAPE字符,通常将之译为转义字符,但也有更形象的译名脱逸字符.逃逸 ...