PHP - $ request-> getPost('first_name')

Leo*_*eon 4 php zend-framework

public function process(Zend_Controller_Request_Abstract $request)
{
     $this->first_name = $this->sanitize($request->getPost('first_name'));
....
}
Run Code Online (Sandbox Code Playgroud)

我的问题是$request类的实例zend_controller_request_abstract,但是getpost是在类zend_controller_request_http中定义的函数,它扩展了zend_controller_request_abstract,为什么直接$request调用getPost()

Rob*_*len 7

类型提示只是一个提示.所有这些都表明$request必须延伸Zend_Controller_Request_Abstract.它并不意味着$request是一个实例Zend_Controller_Request_Abstract.

在这种特殊情况下,$request是一个实例,Zend_Controller_Request_Http它可以实现getPost(),因此您可以毫无问题地调用$request->getPost().$request也是一个扩展自的类的实例,Zend_Controller_Request_Abstract因此PHP允许它首先传递给process方法.