属性(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. IBN-Net: 提升模型的域自适应性

    本文解读内容是IBN-Net, 笔者最初是在很多行人重识别的库中频繁遇到比如ResNet-ibn这样的模型,所以产生了阅读并研究这篇文章的兴趣,文章全称是: <Two at Once: Enha ...

  2. C/C++知识总结 四 循环与分支语句

    C/C++循环与分支语句 循环与分支语句的意义 关系运算符.逻辑运算符 for循环和嵌套for循环(基于范围for循环) while循环与do while循环 分支if语句.if else语句.if ...

  3. Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty messa

    1.git提交的时候遇到: # Please enter the commit message for your changes. Lines starting with '#' will be ig ...

  4. Go 开发环境搭建和代码调试

    写这篇笔记的目的,主要是分享我在Go学习中遇到的坑.让后面的学习者能否参考有用的经验. 其中有一些小技巧,对初学者来说,可能会大大节约填坑的时间. 比如如何设置vscode的Go调试器,Go的语法高亮 ...

  5. 手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊

    资料:慕课网 第二章:手动搭建I/O网络通信框架2:Socket和ServerSocket入门实战,实现单聊 这个基础项目会作为BIO.NIO.AIO的一个前提,后面会有数篇博客会基于这个小项目利用B ...

  6. SpringCloud(一)之我学 Eureka

    1.常用注册中心 1).zookeeper:高一致性(多个节点的数据保持一致): 2).eureka:高可用(系统不能访问的时间很少): 3).consul:上诉两个方案的折中. 高可用:消灭单点故障 ...

  7. ubuntu上安装lamp环境命令清单

    #install configuration manager sudo apt-get install tasksel #install basic lamp stack sudo tasksel i ...

  8. Git常用命令(一)

    $ git init 初始化仓库(会生成一个隐藏文件.git) $ git add + (文件名) 实现对指定文件的跟踪 $ git commit 提交更新$ git clone + URL 克隆远程 ...

  9. 如何在VMwareWorkstation中安装Ubuntu系统

    文章更新于:2020-03-17 注:如果安装之后重启停留在Write through,则关闭客户机,将 ISO 镜像换为物理光驱,或取消勾选开机连接.再次开机即可正常进入系统. 文章目录 一.安装环 ...

  10. UC接口文档

    UC接口文档 一.功能描述 提供同步登录.退出.注册等相关接口,可以实现用户一个账号,在一处登录,全站通行. 二.测试环境UC地址 http://s1.p5w.net/uc/ 三.相关接口 UC_AP ...