From e52cee8cbc16c686395169a697305c10b693c842 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Fri, 19 Jun 2009 11:28:42 +0000 Subject: [PATCH] - DibiConnection: insert() and update() accepts ArrayObject --- dibi/dibi.php | 4 ++-- dibi/libs/DibiConnection.php | 12 ++++++++++-- dibi/libs/DibiFluent.php | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dibi/dibi.php b/dibi/dibi.php index 3b53469a..263ceec9 100644 --- a/dibi/dibi.php +++ b/dibi/dibi.php @@ -536,7 +536,7 @@ class dibi * @param array * @return DibiFluent */ - public static function update($table, array $args) + public static function update($table, $args) { return self::getConnection()->update($table, $args); } @@ -548,7 +548,7 @@ class dibi * @param array * @return DibiFluent */ - public static function insert($table, array $args) + public static function insert($table, $args) { return self::getConnection()->insert($table, $args); } diff --git a/dibi/libs/DibiConnection.php b/dibi/libs/DibiConnection.php index c8ccf684..915fadb3 100644 --- a/dibi/libs/DibiConnection.php +++ b/dibi/libs/DibiConnection.php @@ -581,8 +581,11 @@ class DibiConnection extends DibiObject * @param array * @return DibiFluent */ - public function update($table, array $args) + public function update($table, $args) { + if (!(is_array($args) || $args instanceof ArrayObject)) { + throw new InvalidArgumentException('Arguments must be array or ArrayObject.'); + } return $this->command()->update('%n', $table)->set($args); } @@ -593,8 +596,13 @@ class DibiConnection extends DibiObject * @param array * @return DibiFluent */ - public function insert($table, array $args) + public function insert($table, $args) { + if ($args instanceof ArrayObject) { + $args = (array) $args; + } elseif (!is_array($args)) { + throw new InvalidArgumentException('Arguments must be array or ArrayObject.'); + } return $this->command()->insert() ->into('%n', $table, '(%n)', array_keys($args))->values('%l', array_values($args)); } diff --git a/dibi/libs/DibiFluent.php b/dibi/libs/DibiFluent.php index 69426e0d..c4d186bc 100644 --- a/dibi/libs/DibiFluent.php +++ b/dibi/libs/DibiFluent.php @@ -126,7 +126,7 @@ class DibiFluent extends DibiObject implements IDataSource } elseif ($arg instanceof self) { $args = array_merge(array('('), $arg->_export(), array(')')); - } elseif (is_array($arg)) { // any array + } elseif (is_array($arg) || $arg instanceof ArrayObject) { // any array if (isset(self::$modifiers[$clause])) { $args = array(self::$modifiers[$clause], $arg);