From f8db4aae02465dabaf7907f5e821414eeeea14bf Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Tue, 7 Feb 2017 00:20:03 -0500 Subject: Add function expectType() to table class protected function exceptType added for use by subclasses to assert that the database object loaded is the correct type and to protect against cases like EG: passing the GUID for a group to new user(...); If a problem is detected, throw an exception. --- app/class/table.class.php | 15 +++++++++++++++ app/class/user.class.php | 1 + 2 files changed, 16 insertions(+) (limited to 'app/class') diff --git a/app/class/table.class.php b/app/class/table.class.php index 2759176..45be8c5 100644 --- a/app/class/table.class.php +++ b/app/class/table.class.php @@ -201,6 +201,21 @@ abstract class table while (self::isGUID($guid)); return $guid; } + + /* + * Assert that this object is of the expected type in the database. + * Throw an exception if a type mismatch exists. Check will only + * be performed if guid and objtype are set on this object. + */ + protected function expectType(string $objtype) : void + { + if (isset($this->guid) && isset($this->objtype)) + { + if ($this->objtype != $objtype) + throw new Exception("Invalid object allocation. " . $this->guid . " is a " . + $this->objtype . ", not a " . $objtype . "."); + } + } } ?> diff --git a/app/class/user.class.php b/app/class/user.class.php index 45fa5a5..7defa8f 100644 --- a/app/class/user.class.php +++ b/app/class/user.class.php @@ -38,6 +38,7 @@ class user extends agent ); parent::__construct($guid); + $this->expectType("user"); } /* -- cgit v1.2.3