我一直在Java中做这类事情,我正试图弄清楚在PHP中这是否可行。如果可能的话,这就是我所期望的语法,但我想知道是否有一些特殊的方法可以做到这一点(如果可能,那就是)。
class Foo {
public static class FooBarException extends Exception {
}
public static class BarBazException extends Exception {
}
public function DoSomething() {
try {
// Calls to other class methods that can
// throw FooBarException and BarBazException
} catch (self::FooBarException $e) {
// Stuff..
}
}
}
$bang = new Foo();
try {
$bang->DoSomething();
} catch (Foo::BarBazException $e) {
// Stuff..
}
不,你不能。然而,PHP 5.3中引入了名称空间。对于名称空间,您可以类似地执行以下操作:
<?php
namespace MyNamespace
{
use Exception;
class FooBarException
extends Exception
{
}
class FooBazException
extends Exception
{
}
class Foo
{
public function doSomething()
{
throw new FooBarException;
}
}
}
namespace AnotherNamespace
{
$bang = new 'MyNamespace'Foo;
try {
$bang->doSomething();
} catch('MyNamespace'FooBarException $up) {
throw $up; // :)
}
}
不,这是不可能的。
但是,您可以使用名称空间来获得类似的效果。
在PHP中无法做到这一点,但在php5.3中,您可以使用名称空间来实现类似的功能
http://php.net/namespace