PHP强制对象类型之instanceof操作符(3)

时间:2010-01-13 08:36:00   来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:步来把一个检查例程添加到(X)HTML widget类的构造器和"getHTML()"方法中,这样它们可以接受其它的widget作为输入参数。请检查下面改进的类:      class Div extends HTMLElement{    private $output='<div ';    private $data;    public function __construct($attributes=array(),...
  正文:

四、 扩展"instanceof"操作符的使用:嵌套(X)HTML widget
  
    好。你已经看到了"instanceof"操作符在被直接注入到页面生成器类的输入对象进行类型检查方面所表现出的良好功能。现在,我将再进一步来把一个检查例程添加到(X)HTML widget类的构造器和"getHTML()"方法中,这样它们可以接受其它的widget作为输入参数。请检查下面改进的类:
  
  class Div extends HTMLElement{
   private $output='<div ';
   private $data;
   public function __construct($attributes=array(),$data){
    if(!$data instanceof HTMLElement&&!is_string($data)){
     throw new Exception('Invalid parameter type');
    }
    parent::__construct($attributes);
    $this->data=$data;
   }
   //'getHTML()'方法的具体实现
   public function getHTML(){
    foreach($this->attributes as $attribute=>$value){
     $this->output.=$attribute.'="'.$value.'" ';
    }
    $this->output=substr_replace($this->output,'>',-1);
    $this->output.=($this->data instanceof HTMLElement)?
    $this->data->getHTML():$this->data;
    $this->output.='</div>';
    return $this->output;
   }
  }
  class Header1 extends HTMLElement{
   private $output='<h1 ';
   private $data;
   public function __construct($attributes=array(),$data){
    if(!$data instanceof HTMLElement&&!is_string($data)){
     throw new Exception('Invalid parameter type');
    }
    parent::__construct($attributes);
    $this->data=$data;
   }
   //'getHTML()'方法的具体实现
   public function getHTML(){
    foreach($this->attributes as $attribute=>$value){
     $this->output.=$attribute.'="'.$value.'" ';
    }
    $this->output=substr_replace($this->output,'>',-1);
    $this->output.=($this->data instanceof HTMLElement)?
    $this->data->getHTML():$this->data;
    $this->output.='</h1>';
    return $this->output;
   }
  }
  class Paragraph extends HTMLElement{
   private $output='<p ';
   private $data;
   public function __construct($attributes=array(),$data){
    if(!$data instanceof HTMLElement&&!is_string($data)){
     throw new Exception('Invalid parameter type');
    }
    parent::__construct($attributes);
    $this->data=$data;
   }
   //'getHTML()'方法的具体实现
   public function getHTML(){
    foreach($this->attributes as $attribute=>$value){
     $this->output.=$attribute.'="'.$value.'" ';
    }
    $this->output=substr_replace($this->output,'>',-1);
    $this->output.=($this->data instanceof HTMLElement)?
    $this->data->getHTML():$this->data;
    $this->output.='</p>';
    return $this->output;
   }
  }
  class UnorderedList extends HTMLElement{
   private $output='<ul ';
   private $items=array();
   public function __construct($attributes=array(),$items=array()){
来源:http://www.002pc.com/master/College/Programming/PHP/11799.html

收藏到:

关于《PHP强制对象类型之instanceof操作符(3)》文章的评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

随机文章

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by rand() limit 10

顶出来的热门

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by diggtop desc,id desc limit 10
站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td