当前位置: 我爱LAMP > PHP > 文章正文

PHP中实现面向对象编程

发表于 2009-07-19 12:07    文章来源:互联网

这篇文章介绍在PHP的面向对象编程(OOP)。我将演示如何用面向对象的概念编出较少的代码但更好的程序。祝大家好运。

面向对象编程的概念对每一个作者来说都有不同的看法,我提醒一下一个面向对象语言应有的东西:

 -数据抽象和信息隐藏
 -继承
 -多态性

在PHP中使用类进行封装的办法:

classSomething{
//InOOPclassesareusuallynamedstartingwithacapletter.
var$x;

functionsetX($v){
//Methodsstartinlowercasethenuselowercasetoseprate
//wordsinthemethodnameexamplegetValueOfArea()
$this->x=$v;
}

functiongetX(){
return$this->x;
}
}

?>
当然你可以用你自己的办法,但有一个标准总是好的。

PHP中类的数据成员使用”var”定义,数据成员是没有类型直到被赋值。一个数据成员可能是一个integer、数组、联合数组(associativearray)或甚至对象(object).方法在类里定义成函数,在方法里存取数据成员,你必须使用$this->name这样的办法,否则对方法来说是一个函数的局部变量。

使用new来创建一个对象

$obj=newSomething;
然后使用成员函数

$obj->setX(5);
$see=$obj->getX();
setX成员函数将5赋给对象(而不是类)obj中成员变量,然后getX返回值5.

你也可以用对象引用来存取成员变量,例如:$obj->x=6;然而,这不一种好的面向对象编程的方法。我坚持你应使用成员函数来设置成员变量的值和通过成员函数来读取成员变量。如果你认为成员变量是不可存取的除了使用成员函数的办法,你将成为一个好的面向对象程序员。但不幸的是PHP本身没有办法声明一个变量是私有的,所以允许糟糕的代码存在。

在PHP中继承使用extend来声明。

classAnotherextendsSomething{
 var$y;
 functionsetY($v){
//Methodsstartinlowercasethenuselowercasetoseperate
//wordsinthemethodnameexamplegetValueOfArea()
$this->y=$v;
 }

 functiongetY(){
return$this->y;
 }
}

?>
这样类”Another”的对象拥有父类的所用成员变量及方法函数,再加上自己的成员变量及成员函数。如:

$obj2=newAnother;
$obj2->setX(6);
$obj2->setY(7);
多重继承不被支持,所以你不能让一个类继承多个类。

在继承类中你可以重新定义来重定义方法,如果我们在”Another”重新定义getX,那么我们不再能存取”Something”中的成员函数getX.同样,如果我们在继承类中声明一个和父类同名的成员变量,那么继承类的变量将隐藏父类的同名变量。

你可以定义一个类的构造函数,构造函数是和类同名的成员函数,在你创建类的对象时被调用。

classSomething{
 var$x;

 functionSomething($y){
$this->x=$y;
 }

 functionsetX($v){
$this->x=$v;
 }

 functiongetX(){
return$this->x;
 }
}

?>

本文链接: http://www.52lamp.com.cn/detail/3632.html

喜欢我爱LAMP – lamp开发程序交流学习平台的文章,那就通过 RSS Feed 功能订阅阅读吧!