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.访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别.这个特性可以让我们隐藏代码的一些实现细节,并且可 ...
随机推荐
- [noip模拟]食物中毒<暴搜+状压优化>
问题描述 Bqc经过一段时间的研究发现,要解这种毒需要一种特殊的药物.不幸的是,这种药物在 市面上不存在,没有办法Bqc只好亲自制得这种药物.它含有M种化学物质A1,A2,…,AM.现 在Bqc的手上 ...
- win10 安装redis相关问题。
最近需要在win10安装redis,但是redis的msi文件总是报这个错误: Redis on Windows Setup Wizard ended prematurely 都说是.NET fram ...
- nginx代理图片访问
nginx代理图片访问 首先配置nginx的代理物理路径 我的是在E盘下面的image 1 #图片的代理 2 server { 3 listen 80; 4 #配置访问的域名 5 server_nam ...
- Sql练习201908200916
表结构: 一条sql修改多条数据(Sql server),oracle,mysql请自行尝试: ; go 完成.
- 简单记录下RestTemplate 中postForObject调用例子
学无止境! 今天无意中做了下RestTemplate调用demo,简单的尝试了下一个项目调用另一个项目接口示例 在A项目中创建可访问controller 然后在B项目中进行调用 调用成功
- VAuditDemo-任意文件读取
任意文件读取是属于文件操作漏洞的一种. 一般任意文件读取漏洞可以读取配置信息.甚至系统重要文件. 严重的话,就可能导致SSRF,进而漫游内网. 文件操作漏洞 任意文件删除--删除lock 任意文件复制 ...
- ASP.NET Core中的Controller
ASP.NET CORE出现之前我们实现的Controller,MVC都继承自Controller基类,WebApi的话继承自ApiController.现在ASP.NET CORE把MVC跟WebA ...
- linux下shell脚本中sed命令的用法
先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> te ...
- pm2 开机启动egg项目
1.在服务器上安装PM2 npm install pm2 -g 2.对PM2进行更新 pm2 update 3.进入服务器中egg项目更目录,并新建server.js文件,并在其中写入以下代码 con ...
- Scratch 第4课满天星
素材及视频下载 链接:https://pan.baidu.com/s/1qX0T2B_zczcLaCCpiRrsnA提取码:xfp8