【问题标题】:Where to put my custom system-specific exceptions in Zend Framework在 Zend Framework 中将我的自定义系统特定异常放在哪里
【发布时间】:2012-04-16 00:00:50
【问题描述】:

我需要创建一些基础异常类并从中继承。

我看到了两种方法:

1. Create folder 'Exceptions' in library and use standard autoload mechanism
    /library
      /Exception/
        Base.php
        InvalidParameter.php
2. Just declare exception classes in model, that uses it.

有没有更好的更“Zend-ish”的方法?

【问题讨论】:

  • 我想说选项 1 已经是 Zend 风格了

标签: php zend-framework exception


【解决方案1】:

创建特定异常类的目的是将其与某些特定功能(数据库、会话等)相关联。例如,如果您的功能可以在一个类中完整描述

Class AdminController extends Zend_Controller_Action
{

public function loginAction()
{
  throw new LoginException('Failed login');
}
}

Class LoginException extends Exception {
}

注意这两个类都在同一个文件 AdminController.php 中。这种方法更快,因为它在同一个文件中,不需要自动加载来加载 LoginException。

【讨论】:

  • 这使得LoginException 类只在使用AdminController 的地方(id.throwablecatchable)可用(id.loaded)。
【解决方案2】:

如果你查看 zend 库,他们通常会做的是

/library
   Exception.php
  /Exception/
    InvalidParameter.php

InvalidParameter 类看起来像 Exception_InvalidParameter extends Exception。这与您在选项 1 中的建议非常相似。 我通常喜欢将我所有的自定义库类放入/library/custom

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多