Zend framework 了解Zend_控制器_请求_抽象和其他核心Zend类

Zend framework 了解Zend_控制器_请求_抽象和其他核心Zend类,zend-framework,abstract-class,subclass,overriding,Zend Framework,Abstract Class,Subclass,Overriding,我正在深入挖掘Zend框架,现在我有点困惑。我特别检查了Zend_控制器_操作(*_操作)、Zend_控制器_请求_HTTP(*_HTTP)和Zend_控制器_请求_摘要(*_摘要) 顾名思义*\u抽象类是一个抽象类,因此无法实例化,它主要提供方法存根和一些最终实现。实际实现是在*\uHTTP和*\u子类*\u Abstract的简单类中。很公平 现在我看的是*_动作类,就在这里: 查看$\u请求变量,它声明它是*\u Abstract类型的实例。在这一点上,我感到困惑,因为我不知道为什么它应该

我正在深入挖掘Zend框架,现在我有点困惑。我特别检查了Zend_控制器_操作(*_操作)、Zend_控制器_请求_HTTP(*_HTTP)和Zend_控制器_请求_摘要(*_摘要)

顾名思义*\u抽象类是一个抽象类,因此无法实例化,它主要提供方法存根和一些最终实现。实际实现是在*\uHTTP和*\u子类*\u Abstract的简单类中。很公平

现在我看的是*_动作类,就在这里:

查看$\u请求变量,它声明它是*\u Abstract类型的实例。在这一点上,我感到困惑,因为我不知道为什么它应该是*\u Abstract类型而不是*\u Http类型,因为从技术上讲,不能有一个抽象类的实例

因此,我的问题是:

  • 为什么在这里声明抽象类的实例
  • 接下来,我想重写$\u请求类的getParams()方法,因为这是我们的应用程序检索所有参数的方式,我想在这里对所有输入应用一些常见的清理和黑名单规则

    不幸的是,在我的BaseController(所有其他控制器的子类主控制器)中,我声明了以下内容:

    $_request = new RequestClass(); //RequestClass subclasses Zend_Controller_Request_Http and overrides getParams()
    
    我的应用程序没有按它应该的方式启动(我得到一个空白屏幕)

    对于那些更好奇的人来说,RequestClass()getParams()除了:

    getParams()
    {
      $params = parent::getParams();
      //sanitization rules over $params;
      return $params;
    
    }
    

    Zend\u Controller\u Request\u Abstract
    的类型提示实际上意味着请求必须是扩展
    Zend\u Controller\u Request\u Abstract
    的类的实例


    除非您谨慎地不使用ZF的路由,否则最好通过路由对参数进行清理。否则,如果您得到一个空白屏幕,这意味着
    display\u errors
    将被关闭,而PHP错误或异常将被记录。查看web服务器错误日志以了解实际问题。

    能否详细说明通过ZF路由进行的清理?您可以在路由中指定参数应匹配特定的集或值,或特定的正则表达式模式。这里的示例:(ZF1)谢谢Tim,您链接我的示例似乎只针对URL参数,我不太了解如何使用ZF路由设置POST参数的可变要求。特别是,我只是试图在appAvoiding XSS中阻止Javascript(标记),这是您应该在视图级别执行的操作-
    $this->escape($something)
    ,而不是在请求参数级别执行的操作。是的,但这是在我的输出中转义数据,从输入角度来看,这更像是一种安全预防措施