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

原文地址:https://www.cnblogs.com/fx2008/p/2975021.html