选择显示字体大小

第1次亲密接触php5(2)


   接上篇,继续硬着头皮往下翻。。。。:)

类型指示



php5,你可以在一个类的方法中指明其参数必须为一个类的实例:

example 10: 类型实例

<?php
class foo {
  // code ...
}

class bar {
  public function process_a_foo(foo &#36;foo) {
   // some code
  }
}

&#36;b = new bar();
&#36;f = new foo();
&#36;b->process_a_foo(&#36;f);
?>


可以看到,在变量前指定一个类名,让php5知道这个变量将是一个类的实例

静态成员



静态成员和静态方法在oop中一般称为&quot;类变量&quot;和&quot;类方法&quot;。

一个&quot;类方法&quot;可以在对象没有被实例化的时候调用
一个&quot;类变量&quot;可以在对象没有被实例化的时候访问(也不需要对象的方法来调用)

example 11: 类变量和类方法


<?php
class calculator {
  static public &#36;pi = 3.14151692;

  static public function add(&#36;x,&#36;y) {
    return &#36;x + &#36;y;
  }
}

&#36;s = calculator::&#36;pi;
&#36;result = calculator::add(3,7);
print(&quot;&#36;result&quot;);
?>


* 异常处理



异常处理是开发语言中公认的处理异常错误的方法,如在java和c++中。
php5用&quot;try&quot;和&quot;catch&quot;关键字来捕获异常。

example 12: 异常处理

<?php
class foo {

  function divide(&#36;x,&#36;y) {
    if(&#36;y==0) throw new exception(&quot;cannot divide by zero&quot;);
    return &#36;x/&#36;y;
  }
}

&#36;x = new foo();

try {
  &#36;x->divide(3,0);   
} catch (exception &#36;e) {
    echo &#36;e->getmessage();
    echo &quot;\n<br />\n&quot;;
    // some catastrophic measure here
}
?>



可以看出,&quot;try&quot;表示的是执行代码的地方,当有错误的时候执行&quot;catch&quot;区域的代码。
在&quot;catch&quot;区域你应当指明执行异常的对象,这样可以使我们的结构更清晰

自定义异常处理



你可以在程序中定义自己习惯的捕获异常错误的代码。
非常简单,你仅仅需要继承一个异常类,在这个类中需要一个构造器和一个叫getmessage的方法而已:

example 13: 自定义异常类

<?php
class weirdproblem extends exception {

   private &#36;data;

   function weirdproblem(&#36;data) {
        parent::exception();
        &#36;this->data = &#36;data;
    }

    function getmessage() {
        return &#36;this->data . &quot; caused a weird exception!&quot;;
    }
}
?>


现在就可以用&quot;throw new weirdproblem(&#36;foo) &quot;来抛出异常。如果在try{}这样的区域中出现异常,php5就会跳入
catch区域来抛出异常。

名称空间



&quot;名称空间&quot;可以让你方便地调用一组类或方法:

example 14: 名称空间

<?php
namespace math {

  class complex {
    //...code...
    function __construct() {
      print(&quot;hey&quot;);
    }
  }
}

&#36;m = new math::complex();
?>


注:在实际应用中,你可以在不同的名称空间里定义同名的类来完成不同的任务(但接口要相同)
<翻译完毕>



终天蹩手蹩脚地翻译完了,有些翻译不正确的地方,如术语、对原文的理解,敬请一一指出,共同完善,共同开始php5的学习、探讨。。。


                            二泉
                            2003/7/2于郑州


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons