<?php
Namespace Database;
class TableDataGateway
{
private $pdo;
public function __construct($pdo)
{
$this->pdo = $pdo;
}
public function getBalance($assetid = false)
{
throw new \Exception('Invalid id in request for balance');
}
$query = "
SELECT * FROM `assets`" . (($assetid) ? " WHERE `assetid` = '$assetid'" : "") . " GROUP BY `assetid`
";
$assetBalance = $this->pdo->query($query)->fetchAll(\PDO::FETCH_KEY_PAIR);
throw new \Exception('No values for requested asset');
}
if (empty($assetBalance)) { throw new \Exception('No assets in database');
}
return $assetBalance;
}
}
# $tdg = new Database\TableDataGateway($pdo);
#
# 1) $tdg->getBalance(); / $tdg->getBalance(0); / $tdg->getBalance(NULL); --> возвращает массив ['assetid'=>количество, ...]
# 2) $tdg->getBalance(666); --> возвращает массив ['666'=>количество]
# 3) $tdg->getBalance(-1); --> выбрасывает исключение
# 4) $tdg->getBalance('я строка'); --> выбрасывает исключение
# 5) $tdg->getBalance(); --> если в базе 0 записей, выбрасывает исключение
PD9waHAKTmFtZXNwYWNlIERhdGFiYXNlOwoKY2xhc3MgVGFibGVEYXRhR2F0ZXdheQp7CiAgICBwcml2YXRlICRwZG87CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcGRvKQogICAgewogICAgICAgICR0aGlzLT5wZG8gPSAkcGRvOwogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QmFsYW5jZSgkYXNzZXRpZCA9IGZhbHNlKQogICAgewogICAgICAgIGlmICghZW1wdHkoJGFzc2V0aWQpICYmIGdldHR5cGUoJGFzc2V0aWQpIT09J2ludGVnZXInKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGlkIGluIHJlcXVlc3QgZm9yIGJhbGFuY2UnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHF1ZXJ5ID0gIgogICAgICAgICAgICBTRUxFQ1QgKiBGUk9NIGBhc3NldHNgIiAuICgoJGFzc2V0aWQpID8gIiBXSEVSRSBgYXNzZXRpZGAgPSAnJGFzc2V0aWQnIiA6ICIiKSAuICIgR1JPVVAgQlkgYGFzc2V0aWRgCiAgICAgICAgIjsKICAgICAgICAKICAgICAgICAkYXNzZXRCYWxhbmNlID0gJHRoaXMtPnBkby0+cXVlcnkoJHF1ZXJ5KS0+ZmV0Y2hBbGwoXFBETzo6RkVUQ0hfS0VZX1BBSVIpOwogICAgICAgIAogICAgICAgIGlmIChlbXB0eSgkYXNzZXRCYWxhbmNlKSAmJiAhZW1wdHkoJGFzc2V0aWQpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdObyB2YWx1ZXMgZm9yIHJlcXVlc3RlZCBhc3NldCcpOwogICAgICAgIH0KICAgICAgICBpZiAoZW1wdHkoJGFzc2V0QmFsYW5jZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ05vIGFzc2V0cyBpbiBkYXRhYmFzZScpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJGFzc2V0QmFsYW5jZTsKICAgIH0KCn0KCiMgJHRkZyA9IG5ldyBEYXRhYmFzZVxUYWJsZURhdGFHYXRld2F5KCRwZG8pOwojIAojIDEpICR0ZGctPmdldEJhbGFuY2UoKTsgLyAkdGRnLT5nZXRCYWxhbmNlKDApOyAvICR0ZGctPmdldEJhbGFuY2UoTlVMTCk7ICAgLS0+INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC80LDRgdGB0LjQsiBbJ2Fzc2V0aWQnPT7QutC+0LvQuNGH0LXRgdGC0LLQviwgLi4uXQojIDIpICR0ZGctPmdldEJhbGFuY2UoNjY2KTsgLS0+INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC80LDRgdGB0LjQsiBbJzY2Nic9PtC60L7Qu9C40YfQtdGB0YLQstC+XQojIDMpICR0ZGctPmdldEJhbGFuY2UoLTEpOyAgLS0+INCy0YvQsdGA0LDRgdGL0LLQsNC10YIg0LjRgdC60LvRjtGH0LXQvdC40LUKIyA0KSAkdGRnLT5nZXRCYWxhbmNlKCfRjyDRgdGC0YDQvtC60LAnKTsgIC0tPiDQstGL0LHRgNCw0YHRi9Cy0LDQtdGCINC40YHQutC70Y7Rh9C10L3QuNC1CiMgNSkgJHRkZy0+Z2V0QmFsYW5jZSgpOyAgLS0+INC10YHQu9C4INCyINCx0LDQt9C1IDAg0LfQsNC/0LjRgdC10LksINCy0YvQsdGA0LDRgdGL0LLQsNC10YIg0LjRgdC60LvRjtGH0LXQvdC40LU=