PHP中的类
我觉得自从使用PHP以来最难以理解的概念就是PHP的类。我除了正在学习MySQL一些基本知识以外,对于其他的数据库引擎没有经验。此前对于OOP面向对象编程我也没有经验,OOP对于我来说也是个新鲜事物,但是通过对其原理以及为何如此强大的理解,使我有了一定的我了解如果任何程序都用OOP来实现的话,无疑会得到一个强大的程序;但是对我而言,如果我只是认为自己了解了其中的机制,而不把这种理解应用到编程实践,OOP对我来说将始终停留在纸上谈兵的层次上。于是,几天前,在利用常规的函数来实现一些功能时,我尝试采用对象来实现,我发现的确这让我的工作更加简单了!于是我将这些经验写出来,希望能够帮助象我一样的人们。 类说穿了就是一些变量(OOP概念中的成员变量,译者注)和一些操作处理这些变量的函数(OOP概念中的成员函数)的集合。它提供了一种在程序中以现实生活的形态来思考问题的方法,换句话说,就是描述了一个对象。反之,一个对象或者实例,就是这个类的真正实现。比如说我们要描述一辆自行车:一个合适的自行车类应该含有如下变量:$pedals(脚蹬),$chain(链条),$front wheel(前轮),$rear wheel(后轮),$brakes(刹车), and $handl_bars(车把)。你可以参考现实生活中对一辆自行车的操作来实现你的脚本。比如可以通过向函数Accelerate()传递一个$Braking_Force,并将这个变量应用于你所定义的实例的其他变量如$front_wheel, $rear_wheel,也可以返回操作的结果,从而实现相应的操作。 看起来很美,但是这些通过常规的函数和变量不是也能够实现吗?不错,如果你的程序中只有一个自行车的实例,为它单独定义一个类的确意思不大,但是如果你需要很多自行车实例的时候呢?但是你程序中的变量传递流会变得相当复杂,你得时时保证每个自行车实例指定的变量都正确的传递给了不同的函数。但是使用对象大大降低了你所传递的变量的数量,因为对象中的处理函数(所谓的方法method,译者著。)自动的认定作用范围就限制在本对象之内,那么它所能够操作的对象也就限制在了对象范围内。而且对象的定义可以非常容易的包含到不同的脚本只用,(在得到可重用性的同时)还从而保证了每一个自行车的在不同的脚本中工作方式都是一致的。 让我们来创建一个实际的类,这个类我几乎用在了我站点的每一个页面中,也许你会从中发现值得参考的东西。 我不知道你是什么情况,但是对我来说,当我写一个动态Web页面的时候,我最痛恨的就是时不时要中断对程序流程的思考,转而思考HTML的合适的表现格式。这样做的结果就是使我最终作出来的页面缺少吸引力,因为我没有那么多的精力去顾及字体、字号、背景、以及文字的颜色。解决方法就是:通过PHP类来实现对文本的格式化,从而实现HTML的输出属性定制。 我把这个类命名为“Style”。其中包含了如下一些对于设置HTML属性至关重要成员变量: <?php class Style { var $text; var $alink; var $vlink; var $link; var $bgcol; var $face; var $size; var $align; var $valign; } ?> 我想你已经对于HTML语法相当熟悉了,以上的变量名就是他们在HTML语法中的名字。接下来我为类Style创建一个名称为Style的成员函数。 <?php class Style { function Style ($text= "#000000",$alink= "#AA00AA",$vlink= "#AA00AA",$link= "#3333FF",$bgcol= "#999999",$face= "Book Antiqua",$size=3,$align= "CENTER",$valign= "TOP") { $this->text=$text; $this->alink=$alink; $this->vlink=$vlink; $this->link=$link; $this->bgcol=$bgcol; $this->face=$face; $this->size=$size; $this->align=$align; $this->valign=$valign; } } ?> 当你在类中创建一个与类同名的成员函数时,这个函数会在你每次创建一个类的实例的时候被执行,该函数称为构造函数。我利用这 |
查看所有评论
