zoukankan      html  css  js  c++  java
  • PHP 为你提供一个叫__toString() 的函数,你可以用它来返回表示对象的字符串信息,而且一旦定义它,打印命令将调用它并打印出返回的字符串。

    PHP 为你提供一个叫__toString() 的函数,你可以用它来返回表示对象的字符串信息,而且一旦定义它,打印命令将调用它并打印出返回的字符串。

    View Code
    复制代码
    <?php
    class Person
    {
        private $name;
        
        function __construct($name)
        {
            $this->name = $name;
        }
        
        function __toString()
        {
            return $this->name;
        }
    }
    
    $obj = new Person("小明");
    print $obj;
    ?>
    复制代码

    输出结果:

    小明

    目前__toString() 只能被 print 和 echo 语言结构调用。

    异常处理(Exception Handling)

        大多数现代的语言都支持一些各自的很流行的 try/catch/throw 异常处理范例。 try/catch 是一个闭合的语言结构,它们保护被其包含的源代码而且会告诉 PHP,“我正在处理发生在这些代码的异常”。异常或者错误在被检测到的时候“抛出”并且 PHP 事实地去搜索它所调用的堆栈,查看是否存在一个相应的 try/catch 结构可以来处理这个异常。

        这种方法有许多好处。首先,你不用放置 if() 语句在任何异常有可能出现的地方;因此可以减少很多代码。你可以把整个部分的代码都装入 try/catch 结构并且当一个错误发生时处理错误。另外,在你用 throw 语句检测到一个错误后,可以轻松地传递到代码中需要负责处理异常的地方并继续让程序执行下去,因为 throw 展开了函数调用的堆栈知道它检测到一个合适的 try/catch 块。

        Try/catch 的语法如下:

    复制代码
    Try {
    
           …  // 会抛出一个异常的代码
    
    } catch (FirstExceptionClass $exception) {
    
        …   // 会处理这个异常的代码
    
    } catch (SecondExceptionClass) {
    
    
    }
    复制代码

    Try{ }结构装入的代码可以抛出一个异常,后面可以加上一系列的 catch 语句,每一个 catch 声明哪个异常应该调用并且在 catch 块中异常的对象应该用什么变量名来访问。

    View Code
    复制代码
    <?php
    class NullHandleException extends Exception
    {
        function __construct($message)
        {
            parent::__construct($message);
        }
    }
        
    function printObject($obj)
    {
        if($obj == NULL) {
            throw new NullHandleException("printObject received NULL object");
        }
        print $obj . "<br />";
    }
    
    class MyName
    {
        function __construct($name)
        {
            $this->name = $name;
        }
        
        function __toString()
        {
            return $this->name;
        }
        private $name;
    }
        
    try {
        printObject(new MyName("Bill"));
        printObject(NULL);
        printObject(new MyName("jane"));
    } catch (NullHandleException $exception) {
        print $exception->getMessage();
        print " in file " . $exception->getFile();
        print " on line " . $exception->getLine() . "<br />";
    } catch (Exception $exception) {
        //这里将不会被执行
    }
    
    ?>
    复制代码

    输出结果:

    Bill printObject received NULL object in file D:\wamp\www\php5\01\lx19.php on line 13

  • 相关阅读:
    我与酷派手机N900+的艰难之旅
    从ASPNET1.1迁移到了ASPNET2.0遇到ORA01000: 超出打开游标的最大数
    彩铃平台接口独立取得阶段性胜利
    中央音乐平台的MD5算法问题
    彩铃接口独立完毕
    'OraOLEDB.Oracle.1' provider is not registered on the local machine.错误的解决
    程序员的陷阱
    ASP NET页面下载程序
    从aspnet1.1升级到aspnet2.0的小问题
    彩铃平台接口的计费服务问题解决
  • 原文地址:https://www.cnblogs.com/fx2008/p/2975021.html
Copyright © 2011-2022 走看看