douweicheng5532 2012-02-22 21:15
浏览 60
已采纳

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

I do this type of thing in Java all the time, and I'm trying to figure out if it's possible in PHP. This is what I would expect the syntax to look like if it was possible, but I'm wondering if there's some special way to do it (if it's possible, that is).

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..
}
  • 写回答

3条回答 默认 最新

  • dswm97353 2012-02-22 21:23
    关注

    No, you can not. However, introduced in PHP 5.3 are namespaces. With namespaces you could similarly do:

    <?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; // :)
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。