3 namespace pq\Gateway\Table
;
8 class Reference
implements \IteratorAggregate
23 public $foreignColumns;
28 public $referencedTable;
33 public $referencedColumns;
38 function __construct($ref) {
39 $this->name
= self
::name($ref["foreignColumns"], $ref["referencedColumns"]);
40 $this->foreignTable
= $ref["foreignTable"];
41 $this->foreignColumns
= $ref["foreignColumns"];
42 $this->referencedTable
= $ref["referencedTable"];
43 $this->referencedColumns
= $ref["referencedColumns"];
48 * @return \pq\Gateway\Table\Reference
50 static function __set_state($state) {
51 return new static($state);
55 * Compose an identifying name
56 * @param array $foreignColumns
57 * @param array $referencedColumns
60 static function name(array $foreignColumns, array $referencedColumns) {
61 return implode("_", array_map(function($ck, $cr) {
62 return preg_replace("/_$cr\$/", "", $ck);
63 }, $foreignColumns, $referencedColumns));
67 * Implements IteratorAggregate
68 * @return \ArrayIterator
70 function getIterator() {
71 return new \
ArrayIterator(array_combine(
72 $this->foreignColumns
, $this->referencedColumns
));