我一直在 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 中引入的是 namespaces 。使用命名空间,您可以类似地执行以下操作:
<?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 - 类定义为另一个类的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403138/