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);
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
59 static function name($ref) {
60 return implode("_", array_map(function($ck, $cr) {
61 return preg_replace("/_$cr\$/", "", $ck);
62 }, $ref["foreignColumns"], $ref["referencedColumns"]));
66 * Implements IteratorAggregate
67 * @return \ArrayIterator
69 function getIterator() {
70 return new \
ArrayIterator(array_combine(
71 $this->foreignColumns
, $this->referencedColumns
));