2014-05-23 60 views
1

我想在Phalcon PHP中實現我自己的數據庫方言。我想擴展和覆蓋已經爲PDO保留的一些函數。這就是我想要做的事:Phalcon PHP擴展並覆蓋「更新」和「插入」功能

class DB extends \Phalcon\Db\Adapter\Pdo\Mysql{ 
    function _construct($connection_variables=array()) 
    { 
     parent::_construct($connection_variables); 
    } 

    function update($table="",$variables="") 
    { 
     parent::execute($query); 
    } 
} 

所以,當我嘗試在模型中調用:

$this->db->update('test',array('id'=>'1')); 

它給了我一個錯誤,指出:

Fatal error: Declaration of Libraries\DB::update() must be compatible with Phalcon\Db\AdapterInterface::update($table, $fields, $values, $whereCondition = NULL, $dataTypes = NULL) in ..... 

如何覆蓋更新和插入功能? 感謝

回答

1

update方法必須與Phalcon\Db\AdapterInterface接口聲明的方法匹配,它應該是:

function update($table, $fields, $values, $whereCondition = NULL, $dataTypes = NULL) 
{ 
    // ... 
} 

相反的:

function update($table="",$variables="") 
{ 
    // ... 
} 

的方法signature/header必須是相同的,因爲它在interface

+0

但我想有一個自定義更新功能。在Phalcon中,出於某種原因,您需要將數組中的字段與值分開 - 這並不美觀。我想將值作爲關聯數組('field1'=>'value1','field2'=>'value2'),就像在CodeIgniter中一樣。有沒有辦法通過擴展課程來實現這一點? – cjrb

+0

在這種情況下,您不能使用具有不同簽名的相同方法,您必須使用相同的方法聲明或以其他方式使用不同的方法。 –

+0

謝謝!看來我需要用方法命名來創造性。 – cjrb