php - 类定义为另一个类的静态成员

标签 php class member

我一直在 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/

相关文章:

c++ - 如何检测类中是否确实存在特定的成员变量?

php - 无法与主机 smtp.mailtrap.io [连接超时 #110] 使用正确的环境建立连接

php - 评估在 PHP 中作为字符串给出的逻辑表达式

php - Magento fatal error :未找到类'Varien_Data_Collection_Filesystem'

Swift UISearchbar 如何搜索类的属性

ios - 调用其他类的委托(delegate)方法

java - 如何将 ArrayList 类中的变量设置到 Main 类?

c++ - 如何声明指向成员模板函数的指针?

C#访问静态函数中的非静态成员

php - 计算*一个*行/记录中不同列中值的出现次数