PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 高级应用 >> 

类成员的访问方式和权限

类成员的访问方式和权限

来源:互联网  作者:  发布时间:2009-01-18
PHP5的访问方式允许限制对类成员的访问. 这是在PHP5中新增的功

PHP5的访问方式允许限制对类成员的访问. 这是在PHP5中新增的功能,但在许多面向对象语言中都早已存在. 有了访问方式,才能开发一个可靠的面向对象应用程序,并且构建可重用的面向对象类库.

像C++和Java一样,PHP有三种访问方式:public,private和protected. 对于一个类成员的访问方式,可以是其中之一. 如果你没有指明访问方式,默认地访问方式为public. 你也可以为静态成员指明一种访问方式,将访问方式放在static关键字之前(如public static).

Public成员可以被毫无限制地访问.类外部的任何代码都可以读写public属性. 你可以从脚本的任何地方调用一个public方法. 在PHP的前几个版本中,所有方法和属性都是public, 这让人觉得对象就像是结构精巧的数组.

Private(私有)成员只在类的内部可见. 你不能在一个private属性所在的类方法之外改变或读取它的值. 同样地,只有在同一个类中的方法可以调用一个private方法. 继承的子类也不能访问父类中的private 成员.

要注意,类中的任何成员和类的实例都可以访问private成员. 看例子6.8,equals方法将两个widget进行比较.==运算符比较同一个类的两个对象,但这个例子中每个对象实例都有唯一的ID.equals 方法只比较name和price. 注意equals方法如何访问另一个Widget实例的private属性. Java和C都允许这样的操作.

以下为引用的内容:
<?php 
   class Widget 
   { 
       private $name; 
       private $price; 
       private $id; 

       public function __construct($name, $price) 
       { 
           $this->name = $name; 
           $this->price = floatval($price); 
           $this->id = uniqid(); 
       } 
       //checks if two widgets are the same 检查两个widget是否相同 
       public function equals($widget) 
       { 
           return(($this->name == $widget->name)AND 
               ($this->price == $widget->price)); 
       } 
   } 
   $w1 = new Widget('Cog', 5.00); 
   $w2 = new Widget('Cog', 5.00); 
   $w3 = new Widget('Gear', 7.00); 

   //TRUE 
   if($w1->equals($w2)) 
   { 
       print("w1 and w2 are the same  
\n"); } //FALSE if($w1->equals($w3)) { print("w1 and w3 are the same
\n"); } //FALSE, == includes id in comparison if($w1 == $w2) //不等,因为ID不同 { print("w1 and w2 are the same
\n"); } ?>

Tags: protected   Private   public   php类   class   权限   类属性   类方式   php5   权限   方法   Private   public   属性    
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号