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.访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别.这个特性可以让我们隐藏代码的一些实现细节,并且可 ...
随机推荐
- Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2 ( ORA-02296 RMAN-06004 )
Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2 ( ORA-02296 RMAN-06004 ) 由于后期使用12c的数据库,需要对现有 ...
- 深度使用JSON.stringify()
按照 JSON 的规范,使用 JSON.stringify() 做对象序列化时,如果一个属性为函数,那这个属性就会被忽略. const data1 = { a: 'aaa', fn: function ...
- linux中的文本处理命令
一.wc :统计文本的行数.字符数. -l:只显示行数 -d:只显示单词数 -c:只显示字符数 二.tr:转换字符或者删除字符 -d:删除字符 三.cut -d:指定分隔符 -f:指定要显示的字段 例 ...
- python 控制台输出美化
#格式: 设置颜色开始 :\033[显示方式;前景色;背景色m #说明: 前景色 背景色 颜色 --------------------------------------- 黑色 红色 绿色 黃色 ...
- I - 动物狂想曲 HDU - 6252(差分约束)
I - 动物狂想曲 HDU - 6252 雷格西桑和路易桑是好朋友,在同一家公司工作.他们总是一起乘地铁去上班.他们的路线上有N个地铁站,编号从1到N.1站是他们的家,N站是公司. 有一天,雷格西桑起 ...
- 关于C#三层架构增删改查中的“查询”问题
序:问题总是反复出现,可能只是一个小小的问题,但是就像肉中刺. 问题: 关于“姓名”字段的拼接问题 姓名字段的拼接:this.Repeater1.DataSource = db.GetList(&qu ...
- 玩转控件:对Dev的GridControl控件扩展
缘由 一切实现来源于需求,目的在于不盲目造轮子,有小伙伴儿在看了<玩转控件:对Dev中GridControl控件的封装和扩展>文章后,私信作者说,因公司业务逻辑比较复杂,展示字段比较多,尤 ...
- 如何增加Tomcat内存
有时候在开发中,常常遇到内存溢出问题,很有可能项目过大,导致Tomcat内存不足问题,那么此时就要给Tomcat添加内存了,如,操作如下 1. 先找到Tomcat目录下的catalina.bat文件
- Web Scraper 高级用法——使用 CouchDB 存储数据 | 简易数据分析 18
这是简易数据分析系列的第 18 篇文章. 利用 web scraper 抓取数据的时候,大家一定会遇到一个问题:数据是乱序的.在之前的教程里,我建议大家利用 Excel 等工具对数据二次加工排序,但还 ...
- softmax回归推导
向量\(y\)(为one-hot编码,只有一个值为1,其他的值为0)真实类别标签(维度为\(m\),表示有\(m\)类别): \[y=\begin{bmatrix}y_1\\ y_2\\ ...\\y ...