分享下php5类中三种数据类型的区别


Posted in PHP onJanuary 26, 2015

public: 公有类型

在子类中可以通过self::var 来调用 public类型的方法或属性 可以通过parent::method 来调用父类中的方法

在实例中可以能过$obj->var 来调用 public类型的方法或属性

protected: 受保护类型
在子类中可以通过self::var 来调用 protected类型的方法或属性 可以通过parent::method 来调用父类中的方法
在实例中不能通过$obj->var 来调用 protected类型的方法或属性

private: 私有类型
该类型的属性或方法只能在该类中使用,在该类的实例、子类中、子类的实例中都不能调用私有类型的属性和方法

2.self 和 parent 的区别
a).在子类中常用到这两个对像。他们的主要区别在于self可以调用父类中的公有或受保护的属性,但parent不可以调用

b).self:: 它表示当前类的静态成员(方法和属性) 与 $this 不同,$this是指当前对像

附代码:

<?php
/**
 * parent 只能调用父类中的公有或受保护的方法,不能调用父类中的属性
 * self  可以调用父类中除私有类型的方法和属性外的所有数据
 */
class User{
 public $name;
 private $passwd;
 protected $email; 
 public function __construct(){
  //print __CLASS__." ";
  $this->name= 'simple';
  $this->passwd='123456';
  $this->email = 'bjbs_270@163.com';
 } 
 public function show(){
  print "good ";
 } 
 public function inUserClassPublic() {
  print __CLASS__.'::'.__FUNCTION__." ";
 } 
 protected function inUserClassProtected(){
  print __CLASS__.'::'.__FUNCTION__." ";
 } 
 private function inUserClassPrivate(){
  print __CLASS__.'::'.__FUNCTION__." ";
 }
}

class simpleUser extends User { 
 public function __construct(){  
  //print __CLASS__." ";
  parent::__construct();
 }
 
 public function show(){
  print $this->name."//public ";  
  print $this->passwd."//private ";
  print $this->email."//protected ";
 }
 
 public function inSimpleUserClassPublic() {
  print __CLASS__.'::'.__FUNCTION__." ";
 }
 
 protected function inSimpleUserClassProtected(){
  print __CLASS__.'::'.__FUNCTION__." ";
 }
 
 private function inSimpleUserClassPrivate() {
  print __CLASS__.'::'.__FUNCTION__." ";
 }
}

class adminUser extends simpleUser {
 protected $admin_user;
 public function __construct(){
  //print __CLASS__." ";
  parent::__construct();
 }
 
 public function inAdminUserClassPublic(){
  print __CLASS__.'::'.__FUNCTION__." ";
 }
 
 protected function inAdminUserClassProtected(){
  print __CLASS__.'::'.__FUNCTION__." ";
 }
 
 private function inAdminUserClassPrivate(){
  print __CLASS__.'::'.__FUNCTION__." ";
 }
}

class administrator extends adminUser {
 public function __construct(){  
  parent::__construct();
 }
}

/**
 * 在类的实例中 只有公有属性和方法才可以通过实例化来调用
 */
$s = new administrator();
print '-------------------';
$s->show();
?>
PHP 相关文章推荐
聊天室php&amp;mysql(四)
Oct 09 PHP
转PHP手册及PHP编程标准
Dec 17 PHP
一个捕获函数输出的函数
Feb 14 PHP
php session安全问题分析
Jun 24 PHP
深入PHP5中的魔术方法详解
Jun 17 PHP
PHP数学运算与数据处理实例分析
Apr 01 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
php中时间函数date及常用的时间计算
May 12 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
php数组遍历类与用法示例
May 24 PHP
php字符串过滤与替换小结
Jan 26 #PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 #PHP
php使用cookie保存用户登录的用户名实例
Jan 26 #PHP
PHP简单选择排序算法实例
Jan 26 #PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 #PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 #PHP
php批量删除cookie的简单实现方法
Jan 26 #PHP
You might like
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
深入PHP数据加密详解
2013/06/18 PHP
php计算一个文件大小的方法
2015/03/30 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
node中modules.exports与exports导出的区别
2018/06/08 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
python学习手册中的python多态示例代码
2014/01/21 Python
Python标准库之循环器(itertools)介绍
2014/11/25 Python
Django中的文件的上传的几种方式
2018/07/23 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
python中pickle模块浅析
2020/12/29 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
四风问题原因分析及整改措施
2014/10/24 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
聘任合同书
2015/09/21 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python