1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
/**
* @see https://github.com/laminas/laminas-db for the canonical source repository
* @copyright https://github.com/laminas/laminas-db/blob/master/COPYRIGHT.md
* @license https://github.com/laminas/laminas-db/blob/master/LICENSE.md New BSD License
*/
namespace Laminas\Db\RowGateway;
use Laminas\Db\Adapter\AdapterInterface;
use Laminas\Db\Sql\Sql;
class RowGateway extends AbstractRowGateway
{
/**
* Constructor
*
* @param string $primaryKeyColumn
* @param string|\Laminas\Db\Sql\TableIdentifier $table
* @param AdapterInterface|Sql $adapterOrSql
* @throws Exception\InvalidArgumentException
*/
public function __construct($primaryKeyColumn, $table, $adapterOrSql = null)
{
// setup primary key
$this->primaryKeyColumn = empty($primaryKeyColumn) ? null : (array) $primaryKeyColumn;
// set table
$this->table = $table;
// set Sql object
if ($adapterOrSql instanceof Sql) {
$this->sql = $adapterOrSql;
} elseif ($adapterOrSql instanceof AdapterInterface) {
$this->sql = new Sql($adapterOrSql, $this->table);
} else {
throw new Exception\InvalidArgumentException('A valid Sql object was not provided.');
}
if ($this->sql->getTable() !== $this->table) {
throw new Exception\InvalidArgumentException(
'The Sql object provided does not have a table that matches this row object'
);
}
$this->initialize();
}
}