我通过如下扩展 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);
    }
}

以上正确插入了一条记录。问题是,我不断收到以下通知:
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

据我多次阅读文档和 API 可以看出,我的做法是正确的。我知道我可以关闭 E_STRICT 但我更想知道为什么我会收到上述通知。有任何想法吗? (PHP 5.3,Zend 框架 1.10)

最佳答案

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

public function insert($data) {

应该:
public function insert(array $data) {

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

关于php - 为什么我会收到此严格标准消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4087747/

10-13 02:48