分享下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 表单验证实现代码
Mar 10 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
9个实用的PHP代码片段分享
Jan 22 PHP
php实现字符串反转输出的方法
Mar 14 PHP
php实现Mysql简易操作类
Oct 11 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 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
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
Node.js简单入门前传
2017/08/21 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python 爬虫图片简单实现
2017/06/01 Python
Python中join函数简单代码示例
2018/01/09 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
python序列化与数据持久化实例详解
2019/12/20 Python
如何基于Python实现数字类型转换
2020/02/07 Python
python实现拼接图片
2020/03/23 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
华为C++笔试题
2014/08/05 面试题
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
出纳的岗位职责
2013/11/09 职场文书
学生个人自我鉴定
2014/03/26 职场文书
班主任班级寄语大全
2014/04/04 职场文书
师范大学生求职信
2014/06/13 职场文书
乔迁新居祝福语
2019/11/04 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL