background image

classSomething{
 

var$x;

 

functionSomething($y){

  

$this->x=$y;

 

}

 

functionsetX($v){

  

$this->x=$v;

 

}

 

functiongetX(){

  

return$this->x;

 

}

}

?>
  所以可以用如下方法创建对象:

$obj=newSomething(6);
  构造函数自动赋值

5 给成员变量 x,构造函数和成员函数都是普通的 PHP 函数,所以你可

以使用缺省参数。

functionSomething($x="3",$y="5")
  然后

:

$obj=newSomething();//x=3andy=5
$obj=newSomething(8);//x=8andy=5
$obj=newSomething(8,9);//x=8andy=9
  缺省参数的定义方法和

C 一样,因此你不能传一个值给 Y 但让 X 取缺省值,实参的传

递是从左到右,当没有更多的实参时函数将使用缺省参数。

只有当继承类的构造函数被调用后,继承类的对象才被创建,父类的构造函数没有被

调用,这是

PHP 不同其他面向对象语言的特点,因为构造函数调用链是面向对象编程的特

点。如果你想调用基类的构造函数,你不得不在继承类的构造函数中显式调用它。这样它能
工作是因为在继承类中父类的方法全部可用。

functionAnother(){
$this->y=5;
$this->Something();//explicitcalltobaseclassconstructor.
}

?>
  在面向对象编程中一种好的机制是使用抽象类,抽象类是一种不能实例化而是用来给