分享下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 相关文章推荐
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
php 发送带附件邮件示例
Jan 23 PHP
ThinkPHP验证码使用简明教程
Mar 05 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
十大使用PHP框架的理由
Sep 26 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
php文件缓存方法总结
Mar 16 PHP
利用PHP访问带有密码的Redis方法示例
Feb 09 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
PHP网页安全认证的实例详解
Sep 28 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 PHP
PHP数组基本用法与知识点总结
Jun 02 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获取错误信息的方法
2015/07/17 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
如何在node的express中使用socket.io
2014/12/15 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
python每隔N秒运行指定函数的方法
2015/03/16 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
Python之web模板应用
2017/12/26 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
报社实习生自荐信
2014/01/24 职场文书
公证委托书标准格式
2014/09/11 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
新郎接新娘保证书
2015/05/08 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
详解Python如何批量采集京东商品数据流程
2022/01/22 Python