linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > php >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·PHP生成静态页面的一些经验
·PHP无限分类与树型论坛的实现方
·入门级PHP程序员面试题
·php5学习笔记
·PHP入门速成
·vim的代码折叠
·PHP 和 MySQL初学入门
·织梦CMS中文转换拼音函数研究
·文件下载统计php编程代码
·如何建立自己的新闻发布系统
·Windows下Apache+Tomcat+MySQL
·PHP初学者头疼问题总结
·生成sessionid和随机密码的例子
·Cookie及其使用详细介绍
·使用无限生命期Session的方法
最新文章
·BluePage通用分页类助开发者提
·PHP入门速成
·用php实现广告轮播
·Zend Optimizer 问题浅析
·功能强大的CGI语言----PHP3
·用Session对Web页面进行保护
·PHP--进行模块化设计
·如何将PHP的结果输出到非PHP页
·如何开发一个虚拟域名系统
·PHP4调用自己编写的COM组件
·简单的页面缓冲技术(三)
·简单的页面缓冲技术(二)
·简单的页面缓冲技术(一)
·用Socket发送电子邮件(二)
·用Socket发送电子邮件(一)
Google
 
PHP强制对象类型之instanceof操作符(2)
[ 作者:  加入时间:2008-02-14 12:46:43  来自:Linux联盟收集整理 ]
三、 使用"instanceof"操作符 7rGLinux联盟
   7rGLinux联盟
    如你所见,"instanceof"操作符的使用非常简单,它用两个参数来完成其功能。第一个参数是你想要检查的对象,第二个参数是类名(事实上是一个接口名),用于确定是否这个对象是相应类的一个实例。当然,我故意使用了上面的术语,这样你就可以看到这个操作符的使用是多么直观。它的基本语法如下: 7rGLinux联盟
   7rGLinux联盟
  if (object instanceof class name){ 7rGLinux联盟
   //做一些有用的事情 7rGLinux联盟
  } 7rGLinux联盟
   7rGLinux联盟
    现在,既然你已经了解了这个操作符在PHP 5是如何使用的,那么,为了验证被传递到它的"addHTMLElement()"方法的对象的类型,让我们再定义相应的网页生成器类。下面是这个类的新的签名,我在前面已经提到,它使用了"instanceof"操作符: 7rGLinux联盟
   7rGLinux联盟
  class PageGenerator{ 7rGLinux联盟
   private $output=''; 7rGLinux联盟
   private $title; 7rGLinux联盟
   public function __construct($title='Default Page'){ 7rGLinux联盟
    $this->title=$title; 7rGLinux联盟
   } 7rGLinux联盟
   public function doHeader(){ 7rGLinux联盟
    $this->output='<html><head><title>'.$this->title.'</title></head><body>'; 7rGLinux联盟
   } 7rGLinux联盟
   public function addHTMLElement($htmlElement){ 7rGLinux联盟
    if(!$htmlElement instanceof HTMLElement){ 7rGLinux联盟
     throw new Exception('Invalid (X)HTML element'); 7rGLinux联盟
    } 7rGLinux联盟
    $this->output.=$htmlElement->getHTML(); 7rGLinux联盟
   } 7rGLinux联盟
   public function doFooter(){ 7rGLinux联盟
    $this->output.='</body></html>'; 7rGLinux联盟
   } 7rGLinux联盟
   public function fetchHTML(){ 7rGLinux联盟
    return $this->output; 7rGLinux联盟
   } 7rGLinux联盟
  } 7rGLinux联盟
   7rGLinux联盟
    请注意,在上面的类中,为了确定所有传递的对象是早些时候定义的"HTMLElement"类的实例,"instanceof"操作符是如何包含在"addHTMLElement()"方法中的。现在,有可能重新构建你前面看到的网页,在这种情况下,请确保所有的传递到该网页生成器类的输入对象都是真正的(X)HTML widget对象。下面是相应示例: 7rGLinux联盟
   7rGLinux联盟
  try{ 7rGLinux联盟
   //生成一些HTML元素 7rGLinux联盟
   $h1=new Header1(array('name'=>'header1','class'=>'headerclass'),'Content for H1 element goes here'); 7rGLinux联盟
   $div=new Div(array('name'=>'div1','class'=>'diVClass'),'Content for Div element goes here'); 7rGLinux联盟
   $par=new Paragraph(array('name'=>'par1','class'=>'parclass'),'Content for Paragraph element goes here'); 7rGLinux联盟
   $teststr='This is not a HTML element'; 7rGLinux联盟
   //实例化页面生成器类 7rGLinux联盟
   $pageGen=new Page生成器(); 7rGLinux联盟
   $pageGen->doHeader(); 7rGLinux联盟
   //添加'HTMLElement'对象 7rGLinux联盟
   $pageGen->addHTMLElement($teststr) //把简单的字符串传递到这个方法 7rGLinux联盟
   $pageGen->addHTMLElement($h1); 7rGLinux联盟
   $pageGen->addHTMLElement($div); 7rGLinux联盟
   $pageGen->addHTMLElement($par); 7rGLinux联盟
   $pageGen->doFooter(); 7rGLinux联盟
   //显示网页 7rGLinux联盟
   echo $pageGen->fetchHTML(); 7rGLinux联盟
  } 7rGLinux联盟
  catch(Exception $e){ 7rGLinux联盟
   echo $e->getMessage(); 7rGLinux联盟
   exit(); 7rGLinux联盟
  } 7rGLinux联盟
   7rGLinux联盟
    正如你在上面的示例已经看到的,我把一个简单的测试用字符串(并不是一个"HTMLElement"对象)传递到该页面生成器类中,这将通过addHTMLElement()"方法抛出一个异常-为特定的"catch"块所捕获,如下所示: 7rGLinux联盟
   7rGLinux联盟
  Invalid (X)HTML element 7rGLinux联盟
   7rGLinux联盟
    此时,为了确定输入对象的有效性,我使用了"instanceof"操作符,这样以来,可以把上面的网页生成器类转换成一部分更为有效的代码片断。我希望你能真正体会到,通过使用这个操作符,对你的类的方法的输入进行过滤的极端重要性,这样就可以免除外来的不正确的数据输入。 7rGLinux联盟
   7rGLinux联盟
    在展示了"instanceof"操作符在网页生成器类内的正确实现后,还有更多的事情要做。类似于我在前面一篇文章中为PHP 4所编写的(X)HTML widget类,我想包含这个操作符作为它们的"getHTML()"方法的一部分,这样就可以允许创建生成嵌套的(X)HTML元素的网页。下面,让我们讨论这是如何实现的。 7rGLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·PHP强制对象类型之instanceof操作符(1)  (2008-02-14 12:45:19)
 ·让你的PHP引擎全速运转的三个绝招  (2008-02-13 14:25:01)
 ·理解PHP中的MVC编程之控制器  (2008-02-13 11:36:39)
 ·利用PHP编程防范XSS跨站脚本攻击  (2008-02-13 11:35:44)
 ·使用 PHP 5.0创建图形的巧妙方法(5)  (2008-02-13 11:31:15)
 ·使用 PHP 5.0创建图形的巧妙方法(4)  (2008-02-13 11:30:01)
 ·使用 PHP 5.0创建图形的巧妙方法(3)  (2008-02-13 11:26:43)
 ·使用 PHP 5.0创建图形的巧妙方法 (2)  (2008-02-13 11:25:14)
 ·使用 PHP 5.0创建图形的巧妙方法 (1)  (2008-02-13 11:23:14)
 ·PHP程序加速探索之代码优化  (2008-02-13 11:22:09)