购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.7 类的扩展

在面向对象开发中,它最大的特点之一就是可以扩展一个类,创建一个新的子类。新的子类可以保留所有的父类方法或重写的方法。我们来扩展emailer类,重写sendEmail方法,以便它可以发送HTML邮件,如代码清单2-9所示:

代码清单2-9 扩展emailer的HtmlEmailer类


<php
class HtmlEmailer extends emailer{
      public function sendHTMLEmail(){
            foreach $this->recipients as $recipient{
                  $headers = 'MIME-Version 1.0' . "\r\n"
                  $headers .= 'Content-type text/html charset=iso-8859-1' ."\r \n"
                  $headers .= 'From {$this->sender}' . "\r\n"
                  $result = mail$recipient $this->subject $this->body
                  $headers);
                  if $result echo "HTML Mail successfully sent to{$recipient} <br/>"
            }
      }
}>

由于这个类扩展了emailer类,并引入了新的方法:sendHTMLEmail(),我们仍然可以从其父类的方法调用,如代码清单2-10所示:

代码清单2-10 使用发送邮件类


<php
include"class.htmlemailer.php");
$hm = new HtmlEmailer();
//etc.... 
$hm->sendEmail();
$hm->sendHTMLEmail();
   >

如果想访问父类中的方法,我们可以使用parent关键字。例如,如果要访问父类中名叫sayHello()的方法,可以写成parent::sayHello()。

上面的代码清单中,没有写任何关键字调用sendEmai,这表示该方法是从父类emailer类的继承。

另外,如果子类中没有重写构造方法,执行时父类的构造方法同样会被调用。 aEQLCd1+0LQU7ui5z5F3LFro8vaiQcKRxduPP+cXlv4Rqtj0tCBuQqOrC0oUgcvP

点击中间区域
呼出菜单
上一章
目录
下一章
×