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

yipeiwu_com6年前PHP代码库

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实现搜索相似图片

感知哈希算法 count < =5 匹配最相似 count > 10 两张不同的图片 var_dump(ImageHash::run(‘./1.png', ‘./psb.jp...

PHP中让curl支持sock5的代码实例

复制代码 代码如下: //最近需要用到curl测试代理是否可用,代理是sock5非http的 所以需要在curl中增加几句。    curl_setopt($ch...

解析php中两种缩放图片的函数,为图片添加水印

有两种改变图像大小的方法.(1):ImageCopyResized() 函数在所有GD版本中有效,但其缩放图像的算法比较粗糙.(2):ImageCopyResampled(),其像素插值...

Windows下安装Memcached的步骤说明

(其实在Windows下安装还是比较简单的) 源码包准备: 1,memcached 1.2.1 for Win32 binaries 这个是 Win32 服务器端的 memcached...

浅析php数据类型转换

PHP 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个字符串值赋给变量 var,var 就成了一个字符串。如果又把一个整型值...