PHP 3 专题 -- CLASS

---摘自互联网

        一个class是一个变量和使用这些变量的函数的组合。定义class使用如下的语法: 

<?phpclass  Cart  {  var  $items;  //  Items  in  our  shopping  cart 

//  Add  $num  articles  of  $artnr  to  the  cart 

function  add_item  ($artnr,  $num)  {  $this->items[$artnr]  +=  $num;  } 

//  Take  $num  articles  of  $artnr  out  of  the  cart 

function  remove_item  ($artnr,  $num)  { 

if  ($this->items[$artnr]  >  $num)  { 

$this->items[$artnr]  -=  $num; 

return  true; 

}  else  { 

return  false; 







?> 

 

        如上所示,定义了一个名字为Cart的class。这个class由多个描写物品的数组和添加项目、删除项目的函数组成。 

  

        Class是一种类型,这就是说,它是实际变量的设计蓝图。您可以根据设计建立一个变量组和针对它们的一些新的操作。示例如下: 

  

$cart  =  new  Cart; 

$cart->add_item("10",  1); 

 

        如上所示,建立了一个类型为class  Cart的对象$cart。这个对象中的函数add_item()被调用来添加一个物品号为10的项目。 

  

        Class可以使用其他的Class来扩展。这个扩展的或者继承的class(类)拥有基本class所有的变量和函数同时您还可以在其中加如您自己做的扩展定义。要这样定义需要使用扩展定义的关键词。 

  

class  Named_Cart  extends  Cart  { 

var  $owner; 

function  set_owner  ($name)  { 

$this->owner  =  $name; 





 

        以上定义了一个名字为Named_Cart的class(类),这个类拥有所有包含于类Cart中的变量和函数,同时还添加了一个变量$owner和函数set_owner()。您可以建立一个有名字的cart,同时获得cart的拥有者名字。您还可以在类Named_Cart中,使用普通的属于类cart的函数。 

  

$ncart  =  new  Named_Cart;  //  Create  a  named  cart 

$ncart->set_owner  ("kris");  //  Name  that  cart 

print  $ncart->owner;  //  print  the  cart  owners  name 

$ncart->add_item  ("10",  1);  //  (inherited  functionality  from  cart) 

 

        在这个类的函数中变量$this表示这个对象。在当前的对象中,您可以使用$this->something来访问任何变量和函数。 

  

        当您建立一个新的类时,有一个构造器函数将被自动的调用。如果某个函数的名字和类的名字一样,那么它就成为构造器: 

  

class  Auto_Cart  extends  Cart  { 

function  Auto_Cart  ()  { 

$this->add_item  ("10",  1); 





 

        在上面的例子中,定义了一个名字为Auto_Cart的类,它是在原来的类Cart中加上了一个构造器函数,这个构造器函数初始化了类Cart使用的方法是:在每次建立一个类的时候添加一个物品号为10的一个项目。构造器还可以显示一些信息,这些信息可以被随意的挑选,这使他们可以变的十分的有用, 

  

class  Constructor_Cart  { 

function  Constructor_Cart  ($item  =  "10",  $num  =  1)  { 

$this->add_item  ($item,  $num); 





//  Shop  the  same  old  boring  stuff 

$default_cart  =  new  Constructor_Cart; 

//  Shop  for  real... 

$different_cart  =  new  Constructor_Cart  ("20",  17);