什么是对象?我们还可以这样理解,它是一些代码的属性和方法的堆砌。对象类似于一个数组,数组可以存储属性(数组被称为键(key)),对象比数组多出一些方法,它们可以隐藏或开放存取,这在数组里是做不到的。
对象是一个数据结构,可以建立一个松散耦合或多个紧耦合。我们来看一段PHP面向对象的代码。这是一个简单的类,功能是发邮件给用户,如代码清单2-1所示:
代码清单2-1 一个邮件发送类
<?php class emailer{ private $sender; private $recipients; private $subject; private $body; function __construct($sender){ $this->sender = $sender; $this->recipients = array(); } public function addRecipients($recipient){ array_push($this->recipients, $recipient); } public function setSubject($subject){ $this->subject = $subject; } public function setBody($body){ $this->body = $body; } public function sendEmail(){ foreach ($this->recipients as $recipient){ $result = mail($recipient, $this->subject, $this->body,"From: {$this->sender}\r\n"); if ($result) echo "邮件已经成功发送到 {$recipient}<br/>"; } } }?>
上面的类中包含4个私有属性和4个公共方法,这些方法主要都用来处理邮件的收件人。我们现在来使用这个类,如代码清单2-2所示:
代码清单2-2 创建emailer类的实例对象
include('class.emailer.php'); $emailer = new emailer("jobs@21cto.com"); //创建新对象 $emailer->addRecipients("job@21cto.com"); //访问方法 //给一些方法发送参数 $emailer->setSubject("我要找工作"); $emailer->setBody("你好,老弟,你还好吗?"); $emailer->sendEmail();
可以看到,上面的代码片段的可读性都比面向过程方式清晰,从而使代码易于管理维护。知名的CMS与博客软件WordPress的开发者在他的网站上写的座右铭:“编码如诗”,你我都是作诗的人,不是么?