PHP实现在对象之外访问其私有属性private及保护属性protected的方法
本文实例讲述了PHP实现在对象之外访问其私有属性private及保护属性protected的方法。分享给大家供大家参考,具体如下:
public 表示全局的访问权限,类内部外部子类都可以访问;
private表示私有的访问权限,只有本类内部可以使用;
protected表示受保护的访问权限,只有本类或子类或父类中可以访问;
比较经典的用法示例如下:
<?php //父类 class father{ public function a(){ echo "function a<br/>"; } private function b(){ echo "function b<br/>"; } protected function c(){ echo "function c<br/>"; } } //子类 class child extends father{ function d(){ parent::a();//调用父类的a方法 } function e(){ parent::c(); //调用父类的c方法 } function f(){ parent::b(); //调用父类的b方法 } } $father=new father(); $father->a(); // $father->b(); //显示错误 外部无法调用私有的方法 Call to protected method father::b() // $father->c(); //显示错误 外部无法调用受保护的方法Call to private method father::c() $chlid=new child(); $chlid->d(); $chlid->e(); // $chlid->f();//显示错误 无法调用父类private的方法 Call to private method father::b() ?>
运行结果:
function a function a function c
在对象之外,php访问私有及保护属性实现方法如下:
class yunke { protected $a = 55; private $b = 66; public function merge() { $result = clone $this; $result->a=88; $result->b=99; return $result; } public function show() { echo $this->a; echo $this->b; } } $test = new yunke; $test->show(); $test2=$test->merge(); $test2->show();
输出:
55668899
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
相关推荐
-
PHP 5.0对象模型深度探索之属性和方法
可以联用->,如果一个对象的属性包含了一个对象,你可以使用两个->运算符来得到内部对象的属性. 你甚至可以用双重引用的字符串来放置这些表达式. 下面的例子中,对象House中的属性room包含了一组Room对象. 访问方法和访问属性类似.->运算符用来指向实例的方法. 在下面的中调用getLastLogin就是.方法执行起来和类外的函数几乎相同. 如果一个类从另一类中继承而来,父类中的属性和方法将在子类中都有效,即使在子类中没有声明. 像以前提到过的,继承是非常强大的. 如果你想访问一个
-
php面向对象中static静态属性和静态方法的调用
本文实例讲述了php中static静态属性和静态方法的调用.分享给大家供大家参考.具体如下: 这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性). 实例: <?php header("content-type:text/html;charset=utf-8"); c
-
php class中public,private,protected的区别以及实例分析
一,public,private,protected的区别public:权限是最大的,可以内部调用,实例调用等.protected: 受保护类型,用于本类和继承类调用.private: 私有类型,只有在本类中使用. 二,实例 复制代码 代码如下: <?phperror_reporting(E_ALL);class test{ public $public; private $private; protected $protected; static $instance; public func
-
php面向对象中static静态属性与方法的内存位置分析
本文实例分析了php面向对象中static静态属性与方法的内存位置.分享给大家供大家参考.具体如下: static静态属性的内存位置-->类,而不是对象.下面做测试来证明一下 <?php header("content-type:text/html;charset=utf-8"); class Human{ static public $name = "小妹"; public $height; public function tell(){ } } ec
-
php中类和对象:静态属性、静态方法
在PHP中,使用关键字 static 修饰成员属性和成员方法被称为静态属性和静态方法.静态属性和静态方法不需要在类被实例化的情况下可以直接使用. 静态属性 与普通的成员属性不同,静态属性属于类本身而不属于类的任何实例.静态属性可以被看做是存储在类当中的全局变量,可以在任何地方通过类来访问它们. 由于静态属性不受任何具体对象的限制,所以不需要建立类实例,而可以直接引用类中的静态属性,使用语法格式如下: 类名称::$静态属性名称 其中,符号"::"被称作范围解析操作符,它可以用于访问静态成
-
浅谈php中的访问修饰符private、protected、public的作用范围
1. private 只能在类内部使用 2. protected 可以在类内部和继承类里使用.类外部不能使用[即实例化后的对象无法调用] 3. public 全部范围适用. 4.子类复写父类中的方法时,子类中的 访问修饰符的范围要大于等于 父类的[ 继承只能发扬光大,至少保持不变.不可以丢失东西.] 以上这篇浅谈php中的访问修饰符private.protected.public的作用范围就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
PHP实现删除多重数组对象属性并重新赋值的方法
本文实例讲述了PHP实现删除多重数组对象属性并重新赋值的方法.分享给大家供大家参考,具体如下: 实例:sphinx搜索出来的结果,要去掉某个属性值: $cl = new SphinxClient (); $query = $cl->Query ( $keyword, $index ); 方法一,直接删除属性: foreach ( $query['matches'] as $k => $val ) { unset($query['matches'][$k]["attrs"][
-
浅析php面向对象public private protected 访问修饰符
PHP中有三种访问修饰符,分别是: public(公共的.默认) protected(受保护的) private(私有的)public(公共的.默认)在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限.protected(受保护的)被声明为protected的成员,只允许该类的子类进行访问.private(私有的 ) 被定义为private的成员,对于类内部所有成员都可见,没有访问限制.对类外部不允许访问. 图解demo 复制代码 代码如下: cl
-
如何直接访问php实例对象中的private属性详解
前言 本文主要介绍了关于如何直接访问php实例对象中private属性的相关内容,在介绍关键部分之前,我们先回顾一下php面向对象的访问控制. 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的.被定义为公有的类成员可以在任何地方被访问.被定义为受保护的类成员则可以被其自身以及其子类和父类访问.被定义为私有的类成员则只能被其定义所在的类访问. 类属性必须定义为公有,受保护,私有之一.如果用 var 定义,则被视为公
-
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
本文实例讲述了PHP实现在对象之外访问其私有属性private及保护属性protected的方法.分享给大家供大家参考,具体如下: public 表示全局的访问权限,类内部外部子类都可以访问: private表示私有的访问权限,只有本类内部可以使用: protected表示受保护的访问权限,只有本类或子类或父类中可以访问: 比较经典的用法示例如下: <?php //父类 class father{ public function a(){ echo "function a<br/&g
-
Server.CreateObject的调用失败拒绝对此对象的访问的解决方法
今天把一个网站的数据从win2000服务器转移到了win2003服务器上,然后调试,发现在用aspjpeg组件上传图片的时候,提示出错: 其实很多时候是因为你安装的插件权限设置不当造成的.应该坚持你最近安装了什么组件. 最终找到了解决"检查权限时,对Server.CreateObject的调用失败,拒绝对此对象的访问"的方法: windows server 2003默认的安全级别太高了,找到你组件所在的安装目录,右键/属性/安全,添加everyone(我用的是IUSR_WD)的可执行权
-
讲解Java中如何构造内部类对象以及访问对象
通过反射构造内部类对象 首先在 javalang 包下写一个包含内部类的类: package javalang; public class Outer { public static class Inner1{} } 注意这个类是 public static,后面我们慢慢把这些修饰符去掉. 要想通过反射来创建 Inner1 对象,首先要获得 Inner1 的 Class 对象.我们在 Outer 中写上 main 方法: public class Outer { public static cl
-
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
其实通俗的讲类就是对象的模板,为了增强JS的OO特性,受mootoos框架启发我们可以使用一个JSON对象来描述这个对象的模板.在这个模板中我们可以模拟实现私有成员,受保护成员,静态成员. 这是一个在JS中模拟的类定义语法,代码中Class是一个自定义函数,它接受两个参数,第一个参数是类名.第二个参数是一个JSON用来一个对象的模板.在这个JSON对象中其中字段 "extend",,"initialize","static" 为一些预定义关键字,
-
Java对象转JSON时动态的增删改查属性详解
1. 前言 日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON字符串增加额外字段 假如我们有这样结构的JSON: { "username":"felord.cn", "age":18 } 期望增加一个性别字段gender: { "username": "felord.cn", "age"
-
遍历json 对象的属性并且动态添加属性的实现
昨天因为公司的一个需求,所以就研究了一下json对象的属性的遍历和动态修改: var person= { name: 'zhangsan', pass: '123' , 'sni.ni' : 'sss', hello:function (){ for(var i=0;i<arguments.length;i++){ //在不知参数个数情况下可通过for循环遍历 // arguments这个是js 默认提供 alert("arr["+i+"]="+argumen
-
js对象内部访问this修饰的成员函数示例
用wrapper封装这样在对象内外都可以访问 复制代码 代码如下: function MapPool(){ function createMarker(name, lat, lng, state){ var marker = new AMap.Marker({ position : new AMap.LngLat(lng, lat), }); //the function mapMoveTo is not accessible here too AMap.ev
-
js 对象外部访问或者调用问题
以下是我的代码: <script> abc = function(){ this.a; this.b; } abc.prototype = { getData:function(){ var c = function(num){ alert(num); this.b = num; } c('12345'); }, clearData:function(){ this.getData(); alert(this.b); } } var d = new abc(); d.clearData();
-
MS-sql 2005拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限的解决方法
问题:Sql server 2005 默认设置下不允许远程登陆 1 外围设置 tcp/ip 和 named pipe 同时启用 2 服务器 --〉属性 --〉安全性 --〉sql server 和windows 认证模式 问题: 拒绝了对对象 'xxx' (数据库 'xxx',架构 'dbo')的 SELECT 权限. 答案: 数据库(xxx) --->安全性---->架构---->dbo(属性)--->权限--->添加--->浏览--> [public]----
-
javascript 对象属性property与元素属性attribute的浏览器支持
var div = document.getElementById('myId'); div.userProperty = 'test2'; alert(div.attributes.length); // IE6/7/8 -> 4 , [id,class,userAttribute,userProperty] // IE9/FF -> 3, [id,class,userAttribute] alert(div.userAttribute); // IE6/7/8 -> 'test1'
随机推荐
- AngularJS页面访问时出现页面闪烁问题的解决
- 请求转发jsp页面乱码问题的快速解决方法
- Apache2.4和Apache2.2访问控制配置语法对比
- JS HTML5拖拽上传图片预览
- Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
- jQuery+php实现ajax文件即时上传的详解
- Android 使用ViewPager自动滚动循环轮播效果
- PHP自定session保存路径及删除、注销与写入的方法
- python使用urllib模块和pyquery实现阿里巴巴排名查询
- C#反射之基础应用实例总结
- 分享3个php获取日历的函数
- BootStrap表单时间选择器详解
- 轻松学习Javascript闭包函数
- 整理Javascript数组学习笔记
- android避免弹出软键盘遮盖listview的简单方法
- Android之利用EventBus发送消息传递示例
- python中的随机函数random的用法示例
- C#很简单而又很经典的一句代码实例
- python实现文件的分割与合并
- CentOS7中配置Docker的yum源并安装使用详解