为什么我收到此严格标准消息?

kar*_*m79 4 php zend-framework zend-db-table

我通过扩展Zend_Db_Table_Absract如下(简化示例)创建了Zend Framework模型:

class Foos extends Zend_Db_Table_Abstract
{
    protected $_schema = 'Foo';
    protected $_name = 'Foos';
    protected $_primary = 'id';
    protected $_sequence = true;

    public function insert($data) {
        $db = $this->getAdapter();
        $record = array('field1' => $data['field1'],
                        'field2' => $data['field2'],
                        ...
                );
        return parent::insert($record);
    }
}
Run Code Online (Sandbox Code Playgroud)

以上正确插入记录.问题是,我一直收到以下通知:

Strict Standards: Declaration of Foos::insert() should be compatible with that of Zend_Db_Table_Abstract::insert() in /x/x/x/Foo.php on line XX
Run Code Online (Sandbox Code Playgroud)

据我多次阅读文档和API,我所知道的方式是正确的.我知道我可以关闭,E_STRICT但我更想知道为什么我收到上述通知.有任何想法吗?(PHP 5.3,Zend Framework 1.10)

Vip*_*_Sb 12

Mchl大多是正确的,但你得到的错误来自参数不完全匹配,即:

public function insert($data) {
Run Code Online (Sandbox Code Playgroud)

应该:

public function insert(array $data) {
Run Code Online (Sandbox Code Playgroud)

注意array之前的类型说明符$data,你看到的混合是返回类型,参数类型是array.