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

时间:2012-03-31 15:13:09

标签: php zend-framework

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

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

2 个答案:

答案 0 :(得分:7)

类型提示只是一个提示。它表示$request必须从Zend_Controller_Request_Abstract延伸。它意味着$requestZend_Controller_Request_Abstract的实例。

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

答案 1 :(得分:0)

getPost()中未定义

Zend_Controller_Request_AbstractZend_Controller_Request_Abstract未通过任何其他类的扩展继承此函数,因此简而言之,您发布的代码应该抛出一些异常/错误。

编辑:在PHP中,似乎“如果将类或接口指定为类型提示,那么也允许其所有子项或实现。”这意味着您可以将Zend_Controller_Request_HTTP传递给process(),这样就可以了。

来源:http://php.net/manual/en/language.oop5.typehinting.php